Selecting element from DOM with JavaScript and XPath

前端 未结 2 1011
无人共我
无人共我 2020-12-24 07:46

I\'m trying to figure out how to select the textarea in the code below using xpath and JavaScript (which is the only option here).


    
相关标签:
2条回答
  • 2020-12-24 08:03

    The evaluate method does not return a DOM node as you seem to expect. You would need

    var element = document.evaluate( '//body//form/p/textarea' ,document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ).singleNodeValue;
    if (element != null) {
      element.value = '...';
    }
    
    0 讨论(0)
  • 2020-12-24 08:14

    @Mark Robinson comment is right, your Xpath expression is wrong, you could use one of those :

    //body/div/div/form/p/textarea (Mark's example)
    //body//form/p/textarea (any form in body)
    

    Plus, the evaluate function will return a XPathResult object, not the textarea, so you can't do directly element.value

    Here is your example fixed:

    <body>
        <div id="calculator">
            <div id="calculatorController">
                <form action="#" method="get" onsubmit="return false">
                    <p>
                        <textarea disabled="disabled"></textarea>
                    </p>
                </form>
            </div>
        </div>
    </body>
    

    --

    var element = document.evaluate( '//body/div/div/form/p/textarea' ,document, null, XPathResult.ANY_TYPE, null );
    
    var textarea = element.iterateNext ();
    textarea.value = "Hello textarea";
    
    0 讨论(0)
提交回复
热议问题