开发者问题收集

无法读取未定义的属性“style”

2016-02-18
1704

我有类似的东西,但我不知道问题出在哪里。控制台显示 - 无法读取未定义的属性“style”

<div class="price-table-box"></div>
<div class="price-table-box"></div>
<div class="price-table-box"></div>
<div class="price-table-box"></div>

var table = document.getElementsByClassName('price-table-box');

for (var i = 0; i <= table.length; i++) {
    table[i].style.display = 'none';
}
2个回答

您循环了太多元素。 table[4] 不存在,因此它是 undefined

从 0 到 3 循环,而不是从 0 到 4 循环:

for (var i = 0; i < table.length; i++)
David
2016-02-18

有人指出,您正在尝试访问数组中不存在的元素。另外请记住,在页面加载完成之前,您无法通过“document.get...”方法访问 DOM 对象,因为它们在技术上尚不存在,或者尚无法访问。您需要将 javascript 放入 window.onload 事件处理程序或类似程序中。

window.onload = function(){
    var table = document.getElementsByClassName('price-table-box');

    for (var i = 0; i < table.length; i++) {
        table[i].style.display = 'none';
    }
};

确保将 onload 所需的所有内容放入此函数中(或从中调用它),否则您将覆盖之前的声明。

OffTheBricks
2016-02-18