Javascript 父节点有多少子节点? x、 childNodes[0]==表单中的第一个输入标记,不是吗? x、 childNodes[1]==表单中的第二个输入标记,不是吗?

Javascript 父节点有多少子节点? x、 childNodes[0]==表单中的第一个输入标记,不是吗? x、 childNodes[1]==表单中的第二个输入标记,不是吗?,javascript,html,xml,Javascript,Html,Xml,但是第二个document.write语句打印数字5。好的,两个孩子在上面。那么,接下来的三个要素是什么?根据w3schools,x.length语句表示frm1的子编号。但我再次从W3L学校的XML课程中了解到,x.length并不意味着frm1的孩子数或任何东西。即: <form id="frm1"> <input type="text"/> <input type="text"/> </form> <input type

但是第二个document.write语句打印数字5。好的,两个孩子在上面。那么,接下来的三个要素是什么?根据w3schools,x.length语句表示frm1的子编号。但我再次从W3L学校的XML课程中了解到,x.length并不意味着frm1的孩子数或任何东西。即:

<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>
下面是xml代码。也就是说,您可以检查xml文件以了解下面的代码

<!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>
如果尝试在浏览器中运行倒数第二个代码段,则上面倒数第二个代码段中的x.length输出未定义。这有意义吗?我想是的。然后,上面倒数第二个代码段中的x.childNodes.length输出数字9。这就是为什么book元素中有4个元素节点、4个文本节点和1个属性节点。总数是9。为什么下面没有这种情况

<?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>
document.writex.length涉及打印未定义而不是2,不是吗? document.writex.childNodes.length需要打印数字2而不是5,不是吗


请您解释一下上面这两个问题好吗?

表单的索引属性仅包含表单中的元素,childNodes包含所有节点,包括文本节点(如新行和空格字符)。在解析页面后调用时,将打开一个新文档,该文档将清除页面上所有以前的代码,并且不应在XML中工作。只是不要将它用于调试,console.log就是用于调试的。那么,为什么与xml标记相关的x.length没有定义呢。如果x.length为我们提供父节点内的元素,则x.length不提供未定义的元素。你怎么解释这种情况呢?你已经说过了:但我从W3L学校的XML课程中再次知道,x.length并不意味着frm1的孩子数或任何东西。XML不是HTML,XML元素不实现索引属性。OK。非常感谢你。我正在寻找的答案就是它。还感谢您提供console.log。
<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>