我试图从一开始就学习 JavaScript 以理解它。
我在这里想做的是输出 <body>
中找到的每个元素的节点类型。标签。据我所知,<body>
之间有看不见的文本。的子元素由于某种未知的原因,这使得输出
3 1 3 1
我把<script>
<body>
之外的标签标签,但它仍然被计入 for
中循环,结果是 1
的最后一位数字在 3 1 3 1
循环序列。为什么?为什么是<script>
标签被强制放在 <body>
内由浏览器标记?
<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>
标签只能包含 <head>
和<body>
标签,而不是<script>
.
Permitted contents
One head element, followed by one body element
当您的浏览器遇到损坏的 HTML 时,它会尝试修复它。在这种情况下,这意味着治疗您的 <script>
标签就像在 <body>
中一样.
关于javascript - 为什么我的浏览器强制将 script 标签放在 body 标签内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36782238/