到代码:
<!DOCTYPE html>
<html>
<body>
<p>This.........</p>
<p>That.....</p>
<p>And yet .....</p>
<script>
x=document.getElementsByTagName("p");
for (i in x)
document.write("..."+x[i].innerHTML+" "+i+"<br>");
document.write(x.length);
</script>
</body>
</html>
我得到了输出
This.........
That.....
And yet .....
...This......... 0
...That..... 1
...And yet ..... 2
...undefined item
...undefined namedItem
...undefined iterator
...undefined length
3
而不是我所期望的以下内容:
This.........
That.....
And yet .....
...This......... 0
...That..... 1
...And yet ..... 2
3
for-in语句应该在 x 上迭代x的长度与x的长度一样多——正如代码本身所说,它是 3——并终止。相反,它似乎正在做的是迭代节点的所有子节点——而不仅仅是document.getElementsByTagName("p")返回的段落标签。
这要么是我在代码中遗漏的一些微妙之处,要么是 JavaScript 引擎中的错误。
这里缺少什么?