2016-02-18 2 views
-2

У меня есть что-то вроде этого, но я не понимаю, где проблема. Консоль говорит: Cannot read property 'style' of undefinedНе могу прочитать свойство 'style' of undefined

<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'; 
} 

ответ

3

Вы перебираете слишком много элементов. table[4] не существует, поэтому undefined.

Loop 0-3, а не 0-4:

for (var i = 0; i < table.length; i++) 
+0

Спасибо, я забыл, что в программировании все начинается с 0. – Wizard

-2

Было отмечено, что вы пытаетесь получить доступ к элементу массива, который не существует. Если у вас есть более одной проблемы ...

Вы не можете получить доступ к объектам DOM с помощью методов document.get ... до тех пор, пока страница не закончит загрузку, поскольку они еще не существуют технически, или еще не доступны. Вам нужно поместить ваш 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 в эту функцию (или вызвать его из него) или вы перезаписать предыдущую декларацию (ы).

Смежные вопросы