Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我的浏览器在body标记中强制使用script标记?_Javascript_Html_Dom - Fatal编程技术网

Javascript 为什么我的浏览器在body标记中强制使用script标记?

Javascript 为什么我的浏览器在body标记中强制使用script标记?,javascript,html,dom,Javascript,Html,Dom,我试图从一开始就学习JavaScript来理解它 我在这里要做的是输出标记中找到的每个元素的节点类型。我知道由于某种未知的原因,在的子元素之间存在不可见的文本,这使得输出 3 1 3 1 我把标签放在标签外面,但它仍然在for循环中计数,这导致了311循环序列中最后一位数字1。为什么?为什么浏览器会将标记强制放入标记中 <html> <body id = "bodyTest"> <p>Some Text</p>

我试图从一开始就学习JavaScript来理解它

我在这里要做的是输出标记中找到的每个元素的节点类型。我知道由于某种未知的原因,在的子元素之间存在不可见的文本,这使得输出

3 1 3 1
我把标签放在标签外面,但它仍然在for循环中计数,这导致了311循环序列中最后一位数字1。为什么?为什么浏览器会将标记强制放入标记中

<html>
    <body id = "bodyTest"> 
        <p>Some Text</p>
    </body>

    <script type="text/javascript">
        var c = document.body.childNodes;

        var txt = "";
        for(var k = 0; k < c.length; k++) {
            txt += c[k].nodeType + " ";
            console.log(txt);
            console.log(c[k].nodeName);
        }
        alert(txt);
    </script>
</html>
这是我正在使用的代码

<html>
    <body id = "bodyTest"> 
        <p>Some Text</p>
    </body>

    <script type="text/javascript">
        // Code above
    </script>
</html>

这不是有效的HTML。标记只能包含和标记,而不能包含

见:

允许内容 一个头部元素,后跟一个身体元素


当浏览器遇到损坏的HTML时,它会尝试修复它。在本例中,这意味着将标记视为在中。

您的浏览器正在更正格式不良的HTML,方法是将标记放在元素中最接近的有效元素中。

HTML规范对根HTML元素可以包含哪些元素有一些限制。脚本不是其中之一,所以您向我们展示的HTML确实是无效的。不过,浏览器会尽最大努力处理大部分源代码。例如,您可以拥有一个没有html、head和body的html文件,浏览器仍然会通过将输入包装在body和html标记中来显示页面

关于不可见节点:它们是具有单个空格的文本节点。根据规范,任何空格序列都应该被视为单个空格,元素之间的空格、空格、换行符仍然算作文本。试试这个,看看会发生什么:

一些文本

var c=document.body.childNodes; var-txt=; forvar k=0;k谢谢因此html标记只能包含这些元素body和head。这些元素中是否有其他标记?这是一些很好的信息。我已经用错误的方式编码太久了,这就是为什么我试图学习最微小的比特。再次感谢。