Почему выдает ошибку в консоли? js

111
05 мая 2021, 22:50

Столкнулся с ошибкой в консоли:

Cannot set property 'onclick' of undefined

Не пойму почему она возникает. Подскажите, пожалуйста. Вот пример где она возникает:

var choice = document.getElementsByClassName('choice'); 
for(var i = 0; i <= choice.length; i++){ 
    choice[i].onclick = choosePar; 
} 
function choosePar(){ 
    if(this.value == 'y'){ 
        console.log('yes'); 
    } 
    if(this.value == 'n'){ 
        console.log('not'); 
    } 
}
<button class="choice" value="y">Да</button> 
<button class="choice" value="n">Нет</button>

Answer 1

Не корректное условие в цикле. Надо так for(var i = 0; i < choice.length; i++). Не <=, а <. Если бы с 1 начал, то <=

Также не забывай про onload и domready

Answer 2

choice.length - кол-во элементов, в данном случае их 2, но массивы нумеруются с нуля. Т.е. у вас есть элементы с индексами 0 и 1 Вы делаете цикл с 0 до 2 включительно, и он перебирает 0, 1, 2. Когда вы обращаетесь к choice[2] - вы получаете undefined, а у него нет свойства onClick, что и выдаёт данную ошибку в консоли

READ ALSO
Экранирование с помощью JS RegEx

Экранирование с помощью JS RegEx

Необходимо экранировать все символы ' (скобка) методом RegEx в строке ( \' ''' ' ' ), нужно учесть то что в строке возможно уже экранированный символ

124
Как проверить правильно ли работают скрипты в inapp браузере instagram

Как проверить правильно ли работают скрипты в inapp браузере instagram

Хотелось бы проверить работу скриптов сайта в in-app браузере instagram, может есть какая нибудь тестовая площадка?

84
Перенос статичного сайта на react

Перенос статичного сайта на react

ПроблемаЕсть сайт с кучей разных html, в каждой jq скрипты, на главной странице просто ссылки на другие страницы, в общем полный адъ

71