0
http://www.w3schools.com/xml/tryit.asp?filename=try_xpath_select_cdnodes こんにちは、これは元の例へのリンクです。私はここにコードを貼り付けてコピーします。XPathでのxml.evaluateの使用
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
showResult(xhttp.responseXML);
}
};
xhttp.open("GET", "books.xml", true);
xhttp.send();
function showResult(xml) {
var txt = "";
path = "/bookstore/book/title"
if (xml.evaluate) { // what is this line of code for?
var nodes = xml.evaluate(path, xml, null, XPathResult.ANY_TYPE, null);
var result = nodes.iterateNext();
while (result) {
txt += result.childNodes[0].nodeValue + "<br>";
result = nodes.iterateNext();
}
// Code For Internet Explorer
} else if (window.ActiveXObject || xhttp.responseType == "msxml-document") {
xml.setProperty("SelectionLanguage", "XPath");
nodes = xml.selectNodes(path);
for (i = 0; i < nodes.length; i++) {
txt += nodes[i].childNodes[0].nodeValue + "<br>";
}
}
document.getElementById("demo").innerHTML = txt;
}
</script>
</body>
</html>
私はif(xml.evaluate)
文の目的を理解していません。 XPathのブラウザサポートをテストしているようですが、xml.evaluate
がtrueまたはfalseを返すかどうかをテストしているようにも見えます。
おかげ
ありがとうございました。私はあなたの第3のリンクで議論されているように、evaluate()を関数として公正に理解しています。私が理解できないのは、ifステートメント内の使用法です。 –
if(xml.evaluate)が関数またはオブジェクトのプロパティであるかどうか、あるいはこのif文で何が評価されているかはわかりません。 –
カッコを使用しないので、関数の実行ではなく関数の「定義」が返されます。そのようにして、互換性の問題を防ぐのに便利です(第2の箇条書き参照)。 – malarres