2017-03-23 6 views
0

を返さないので、xPathの問題を解明しようとします。私はこれで全面的に新しいので、私は(JavaScriptで)私を助けることができると思った。JavaScriptのxPathは値

私はこの単純なHTMLドキュメントました:

<!DOCTYPE html> 
<html> 
    <head> 
     <title>LOL</title> 
    </head> 
<body> 
    <h1>Hello</h1> 


    </body> 
</html> 

をそして私はH1から "こんにちは" に警告します。私はこう書いた:

var xPath = document.evaluate("//h1", document, null, XPathResult.STRING_TYPE, null); 

alert(xPath); 

しかし、それは動作しません、それは警告していないと値を返しません。私は何か見落としてますか?

ありがとうございました。

+0

これはブラウザで実行していますか?もしそうなら、インスペクタのコンソールウィンドウにエラーが表示されますか? – Daz

答えて

0

それはXPathを使用することは必須ではありません場合は、あなたが試すことができます:

var message = document.querySelector("h1").textContent; 
alert(message); 

をあなたはまだXPathを使用したい場合は:

var xPath = document.evaluate("//h1", document, null, XPathResult.ANY_TYPE, null); 
element = xPath.iterateNext(); 
alert(element.textContent); 
+0

はい、私はそれを知っています。しかし、私はxPathを使用する必要があります。 –

+0

更新された回答を確認する – Andersson

0

あなたのコードが何かを警告し、少ししてきたはずです修正(.stringValueに気付く)、「Hello」を予期して警告する必要があります。

var xPath = document.evaluate("//h1", document, null, XPathResult.STRING_TYPE, null); 
 
alert(xPath.stringValue);
<body> 
 
    <h1>Hello</h1> 
 
</body>

実際のHTMLにデフォルト名前空間(XHTML多分)がある場合は、別の話です。これが正しいことを確認するには、名前空間を無視する次のXPathが動作するかどうか試してみてください。

//*[local-name()='h1']