Javascript 尝试循环querySelectorAll中的元素时,elems是未定义的错误

Javascript 尝试循环querySelectorAll中的元素时,elems是未定义的错误,javascript,Javascript,我好像在某些代码中出错了。它的简化版本是: var elems = document.querySelectorAll(".vat-info"); if (elems.length) { console.dir({ found: elems }); Object.keys(elems).forEach(function (key){ console.dir("X: " + key) var item

我好像在某些代码中出错了。它的简化版本是:

    var elems = document.querySelectorAll(".vat-info");
    if (elems.length) {
        console.dir({ found: elems });
        Object.keys(elems).forEach(function (key){
            console.dir("X: " + key)
            var item = elems[key];
            console.log("got here"); 
        });
    }

我得到的错误是:

未捕获的TypeError:无法读取未定义的属性“0”

令人沮丧的是,我没有在JSFIDLE上看到这个错误!但我通常会在浏览器中看到它:

我不明白有什么错:/I我使用了以下语法:

elems.forEach(function (item,i){
            ....
          });
但是,似乎有些浏览器不喜欢使用
queryselectoral()
输出,因为它是
Object()
而不是
Array()
请尝试一下

var elems=document.querySelectorAll(“.vat信息”);
if(元素长度){
要素forEach(功能(键){
console.log(key.attributes);
log(key.className);
});

}
小提琴控制台中没有错误!!!您的屏幕截图中的错误看起来是
类型错误:元素未定义
,而不是
未捕获类型错误:无法读取未定义
的属性“0”。querySelectorAll的返回值类似于数组,但不是数组。然后数组上的对象键就没有任何意义了。如果希望querySelectorAll的返回值为数组,请执行以下操作:
array.from(document.querySelectorAll(.vat info”);
querySelectorAll需要哪些信息?您正在执行Object.keys(elem),其中elem是数组。谢谢。我实际上已经尝试过:
elems.forEach(function(item,I){
,但在某些浏览器中我遇到了一个错误