Javascript NodeList.length始终返回0

Javascript NodeList.length始终返回0,javascript,nodelist,Javascript,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 但是

我有一个节点列表对象,它是由

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。这是怎么回事?

这是因为在执行JS时DOM还没有加载。它出现在控制台中的原因是,当DOM发生变化时,chrome,或者firefox,将更新控制台,本质上改变控制台中的输出

要使其工作,您有两个选项:

  • 在加载DOM时注册事件处理程序并执行 那就编码吧

    document.addEventListener('DOMContentLoaded',function(){
    //代码
    //单击按钮时发出AJAX请求
    var按钮=document.getElementsByName(“signupButton”);
    });

  • 将此脚本标记移到结束标记之前,以确保DOM在执行时已加载

    
    //代码
    


您可以发布一个完整的代码示例吗?您的代码在页面顶部运行,这意味着运行时元素不存在。您可以通过将脚本移动到页面底部,或将代码放入加载文档后运行的回调函数来解决此问题。