使用JavaScript和XPath从DOM中选择元素

Eri*_*itz 26 javascript xpath dom

我试图找出如何使用xpath和JavaScript(这是唯一的选项)在下面的代码中选择textarea.

<body>
    <div id="calculator">
        <div id="calculatorController">
            <form action="#" method="get" onsubmit="return false">
                <p>
                    <textarea disabled="disabled"></textarea>
                </p>
            </form>
        ...
Run Code Online (Sandbox Code Playgroud)

我正在尝试做这样的事情

var element = document.evaluate( '//body/form/p/textarea' ,document, null, XPathResult.ANY_TYPE, null );
// and write back
element.value = "Hello textarea";
Run Code Online (Sandbox Code Playgroud)

但它失败了

有人热心帮忙吗?

谢谢

在此下方更新

================================================== ==========

整个代码块看起来像这样.别忘了window.onload=function()

<html>
<head>
  <script type='text/javascript'> 
  //<![CDATA[ 
  window.onload=function(){
  var element = document.evaluate( '//body//form/p/textarea' ,document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ).singleNodeValue;

        if (element != null) {
            element.value = 'Hello textarea';
        }

  }
  //]]> 
  </script> 
</head>
<body>
    <div id="calculator">
        <div id="calculatorController">
            <form action="#" method="get" onsubmit="return false">
                <p>
                    <textarea disabled="disabled"></textarea>
                </p>
            </form>
        </div>
    </div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

Mar*_*nen 34

evaluate方法不会像您期望的那样返回DOM节点.你需要

var element = document.evaluate( '//body//form/p/textarea' ,document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ).singleNodeValue;
if (element != null) {
  element.value = '...';
}
Run Code Online (Sandbox Code Playgroud)