Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Не понимаю почему ошибка

Попков Федор Знаток (253), на голосовании 2 года назад
Cannot read property 'add' of undefined at HTMLButtonElement.document.querySelector.onclick

let button = document.querySelector('#button').onclick = function() {

if(button = true) {
button.classList.add('noRed');
} else {
console.log('Eror');
}

};
Голосование за лучший ответ
Оракул Оракул (59297) 2 года назад
if(button = true) {
Вы не сравниваете с true, а присваиваете true переменной button
Нет второго =, а может и третьего
Попков ФедорЗнаток (253) 2 года назад
Спасибо, не заметил
Elepsis Eclipse Гений (64087) 2 года назад
let button = document.querySelector('#button').onclick = function() { };

Цепочка присваиваний работает справа налево.
Сначала происходит это присваивание:

document.querySelector('#button').onclick = function() { };

Возвращается результат присваивания - функция function() { };
Затем происходит присваивание

let button = ( function() { } )

В переменную button попадает ссылка на функцию, а не на элемент.
Должно быть:

let button = document.querySelector('#button');

button.addEventListener('click', function() {
    button.classList.add('noRed');
};

В проверках if-else нет никакого смысла. Если button нет - изначально не получится повесить обработчик события.
Похожие вопросы