Javascript 为什么我的浏览器在body标记中强制使用script标记?
我试图从一开始就学习JavaScript来理解它 我在这里要做的是输出标记中找到的每个元素的节点类型。我知道由于某种未知的原因,在的子元素之间存在不可见的文本,这使得输出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>
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