我有一个由
创建的NodeList对象var buttons = document.getElementsByName("signupButton");
console.log(buttons);
打印
[item: function]
0: button.btn.btn-warning.btn-lg
1: button.btn.btn-warning.btn-lg
2: button.btn.btn-warning.btn-lg
length: 3
__proto__: NodeList
但是buttons.length正在打印0.这里发生了什么?
答案 0 :(得分:3)
这种情况正在发生,因为在执行JS时尚未加载DOM。它出现在控制台中的原因是因为chrome或者firefox会在DOM更改时更新控制台,实质上会改变控制台中的输出。
为了实现这一点,您有两种选择:
为DOM加载时注册一个事件处理程序并执行它 代码然后。
document.addEventListener('DOMContentLoaded', function(){
// the code
//make AJAX request when button is clicked
var buttons = document.getElementsByName("signupButton");
});
在结束标记之前移动此脚本标记,以确保DOM在执行时已加载。
</body>
<script>
// the code
</script>