Javascript “为什么?”;document.documentElement.childNodes“;输出不同的结果?

Javascript “为什么?”;document.documentElement.childNodes“;输出不同的结果?,javascript,dom,document,Javascript,Dom,Document,我认为“document.documentElement.cildNodes”和以前一样都是标记中的子节点,但今天我进行代码替换时,发现了一个特殊情况: <!DOCTYPE html> <html> <head> <title>javascript</title> <script> var o = document.createElement('script'); o.text = 'alert("111")

我认为“document.documentElement.cildNodes”和以前一样都是标记中的子节点,但今天我进行代码替换时,发现了一个特殊情况:

<!DOCTYPE html>
<html>
<head>
<title>javascript</title>
<script>
    var o = document.createElement('script');
    o.text = 'alert("111")';
    var ohtml = document.documentElement;
    alert(ohtml.nodeName); //output HTML
        alert(ohtml.childNodes.length); //nodes length is 1
    alert(ohtml.childNodes.length); //just head
    ohtml.childNodes[0].appendChild(o);
    function shownode() {
        var ohtml = document.documentElement;
        alert(ohtml.nodeName);
        alert(ohtml.childNodes.length);  //nodes length is 3
        alert(ohtml.childNodes[0].nodeName); //head 
        alert(ohtml.childNodes[1].nodeName); //#text 
                alert(ohtml.childNodes[2].nodeName); //body 
    }
</script>
</head>
<body><div>test</div><input id="Button1" type="button" value="show nodes" onclick="shownode();" />
</body>
</html>

javascript
var o=document.createElement('script');
o、 文本='警报(“111”)';
var ohtml=document.documentElement;
警报(ohtml.nodeName)//输出HTML
警报(ohtml.childNodes.length)//节点长度为1
警报(ohtml.childNodes.length)//只是头
ohtml.childNodes[0].appendChild(o);
函数shownode(){
var ohtml=document.documentElement;
警报(ohtml.nodeName);
警报(ohtml.childNodes.length);//节点长度为3
警报(ohtml.childNodes[0].nodeName);//头
警报(ohtml.childNodes[1].nodeName);//#文本
警报(ohtml.childNodes[2].nodeName);//正文
}
测试
为什么我在标记中执行“document.documentElement.childNodes”和在标记中执行函数会得到不同的结果?
我希望有人能给我更多的样品。非常感谢

关键是,您可以在headscript标记中执行它,因此当它被执行时,整个DOM还没有加载到页面中。例如,当您在控制台中调用该函数时,DOM将完全加载,以确保您可以将所有代码移动到
窗口。onload
事件,如下所示:

window.addEventListener("load", function () {
    var o = document.createElement('script');
    o.text = 'alert("111")';
    var ohtml = document.documentElement;
    alert(ohtml.nodeName); //output HTML
    alert(ohtml.childNodes.length); //nodes length is not 1
    alert(ohtml.childNodes.length); // not just head
    ohtml.childNodes[0].appendChild(o);
});
如果您不想使用window.onload事件,只需将它放在您的body标签中:

<body>
<!--your stuff-->
<script>
    alert(ohtml.nodeName); //output HTML
    alert(ohtml.childNodes.length); //nodes length is not 1
    alert(ohtml.childNodes.length); // not just head
</script>
</body>

警报(ohtml.nodeName)//输出HTML
警报(ohtml.childNodes.length)//节点长度不是1
警报(ohtml.childNodes.length);//不只是头

关键是,您可以在head脚本标记中执行它,因此当它被执行时,整个DOM还没有加载到页面中。例如,当您在控制台中调用该函数时,DOM将完全加载,以确保您可以将所有代码移动到
窗口。onload
事件,如下所示:

window.addEventListener("load", function () {
    var o = document.createElement('script');
    o.text = 'alert("111")';
    var ohtml = document.documentElement;
    alert(ohtml.nodeName); //output HTML
    alert(ohtml.childNodes.length); //nodes length is not 1
    alert(ohtml.childNodes.length); // not just head
    ohtml.childNodes[0].appendChild(o);
});
如果您不想使用window.onload事件,只需将它放在您的body标签中:

<body>
<!--your stuff-->
<script>
    alert(ohtml.nodeName); //output HTML
    alert(ohtml.childNodes.length); //nodes length is not 1
    alert(ohtml.childNodes.length); // not just head
</script>
</body>

警报(ohtml.nodeName)//输出HTML
警报(ohtml.childNodes.length)//节点长度不是1
警报(ohtml.childNodes.length);//不只是头

关键是,您可以在head脚本标记中执行它,因此当它被执行时,整个DOM还没有加载到页面中。例如,当您在控制台中调用该函数时,DOM将完全加载,以确保您可以将所有代码移动到
窗口。onload
事件,如下所示:

window.addEventListener("load", function () {
    var o = document.createElement('script');
    o.text = 'alert("111")';
    var ohtml = document.documentElement;
    alert(ohtml.nodeName); //output HTML
    alert(ohtml.childNodes.length); //nodes length is not 1
    alert(ohtml.childNodes.length); // not just head
    ohtml.childNodes[0].appendChild(o);
});
如果您不想使用window.onload事件,只需将它放在您的body标签中:

<body>
<!--your stuff-->
<script>
    alert(ohtml.nodeName); //output HTML
    alert(ohtml.childNodes.length); //nodes length is not 1
    alert(ohtml.childNodes.length); // not just head
</script>
</body>

警报(ohtml.nodeName)//输出HTML
警报(ohtml.childNodes.length)//节点长度不是1
警报(ohtml.childNodes.length);//不只是头

关键是,您可以在head脚本标记中执行它,因此当它被执行时,整个DOM还没有加载到页面中。例如,当您在控制台中调用该函数时,DOM将完全加载,以确保您可以将所有代码移动到
窗口。onload
事件,如下所示:

window.addEventListener("load", function () {
    var o = document.createElement('script');
    o.text = 'alert("111")';
    var ohtml = document.documentElement;
    alert(ohtml.nodeName); //output HTML
    alert(ohtml.childNodes.length); //nodes length is not 1
    alert(ohtml.childNodes.length); // not just head
    ohtml.childNodes[0].appendChild(o);
});
如果您不想使用window.onload事件,只需将它放在您的body标签中:

<body>
<!--your stuff-->
<script>
    alert(ohtml.nodeName); //output HTML
    alert(ohtml.childNodes.length); //nodes length is not 1
    alert(ohtml.childNodes.length); // not just head
</script>
</body>

警报(ohtml.nodeName)//输出HTML
警报(ohtml.childNodes.length)//节点长度不是1
警报(ohtml.childNodes.length);//不只是头