<form id="frm1">
<input type="text"/>
<input type="text"/>
</form>
<input type="submit" onclick="myFunction();" value="Göster"/>
<p id="demo"></p>
<script>
function myFunction(){
var x = document.getElementById("frm1");
document.write(x.length); // 2 (!) Why?
document.write(x.childNodes.length); // 5 (!) Why?
}
</script>
但第二个document.write语句打印数字5.好的,两个孩子在上面。那么,接下来的三个要素是什么?根据w3schools,x.length语句表示frm1的子号。但我从w3schools的XML课程中再次知道x.length并不意味着孩子的数量是&#34; frm1&#34;或&#34;任何事情&#34;。即:
<!DOCTYPE html>
<html>
<body>
<script>
// --------------------- XML DOCUMENT PARSER -------------------------------
if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","books.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
// --------------------------------------------------------------------------
x=xmlDoc.getElementById("first"); // first is an id of XML tag
document.write(x.length + "<br>"); // Output: Undefined
document.write(x.childNodes.length); // Output : 9
</script>
</body>
</html>
以下是xml代码。也就是说,您可以检查xml文件以了解下面的代码。
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book id="first" category="COOKING">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
</bookstore>
如果您尝试在浏览器中运行倒数第二个代码片段,则上面倒数第二个代码片段中的x.length输出&#34; undefined&#34;。是否有意义?我想是的。然后,上面倒数第二个代码片段中的x.childNodes.length输出数字9.这就是为什么book元素中有4个元素节点和4个文本节点加上1个属性节点。总计是9.为什么以下没有这种情况?
<form id="frm1">
<input type="text"/>
<input type="text"/>
</form>
<input type="submit" onclick="myFunction();" value="Göster"/>
<p id="demo"></p>
<script>
function myFunction(){
var x = document.getElementById("frm1");
document.write(x.length); // 2 ? It must be undefined(!)
document.write(x.childNodes.length); // 5 ? It must be 2(!)
}
</script>
document.write(x.length)涉及打印undefined而不是2,不是吗? document.write(x.childNodes.length)涉及打印2而不是5,不是吗?
你能解释一下上面的这两个问题吗?