脚本在加载document
之前运行,那么为什么console.log(b)
会在集合中显示元素?
如果console.log(b)
包含元素,那么为什么console.log(b[0])
会显示undefined
和console.log(b.length)
0
?
<html>
<head>
<script>
function test(){
var b = document.getElementsByName('a');
console.log(b);
console.log(b[0]);
console.log(b.length);
}
test();
</script>
</head>
<body>
<form id="a" name="a"></form>
</body>
</html>
答案 0 :(得分:1)
getElementsByName
会返回NodeList。它是包含匹配节点列表的对象,因此b
不为空。
但是,您在DOM准备好之前运行脚本,因此列表长度为0,没有第一个对象。您需要延迟脚本执行,直到解析了DOM之后,此时表单才会存在。