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

Ошибка Uncaught TypeError: Cannot read properties of null (reading 'addEventListener') JAVASCRIPT

Максим Гаврилов Ученик (74), на голосовании 9 месяцев назад
 function edit1(){
document.querySelector('#edit-txt').style.display='flex';
};
document.querySelector('#edit').addEventListener('mouseover',edit1);
function edit2(){
document.querySelector('#edit-txt').style.display='none';
};
document.querySelector('#edit').addEventListener('mouseout',edit2);

При выходе из аккаунта элемент пропадает и js скрип ругается и остальной код ниже не работает. Как это проигнорировать чтобы остальной код ниже работал
Голосование за лучший ответ
Дмитрий Ульянов Профи (639) 10 месяцев назад
think the easiest approach would be to just check that el is not null before adding an event listener:

const el = document.getElementById('overlayBtn');
if (el) {
el.addEventListener('click', swapper, false);
}
You can also wait to run your code until DOMContentLoaded has completed:

window.addEventListener("DOMContentLoaded", (event) => {
const el = document.getElementById('overlayBtn');
if (el) {
el.addEventListener('click', swapper, false);
}
});
Максим ГавриловУченик (74) 10 месяцев назад
А пояснить можешь? Именно в этой ситуации)
Ашот Айрапетян Ученик (157) 10 месяцев назад
Если элемент исчезает из DOM (Document Object Model) и из-за этого возникают ошибки, вы можете использовать условие для проверки существует ли элемент, прежде чем пытаться применить к нему какие-либо стили или обработчики событий.

Вот пример того, как вы можете модифицировать ваш код:
function edit1(){
var editTxt = document.querySelector('#edit-txt');
if(editTxt) {
editTxt.style .display = 'flex';
}
};

function edit2(){
var editTxt = document.querySelector('#edit-txt');
if(editTxt) {
editTxt.style .display = 'none';
}
};

var edit = document.querySelector('#edit');
if(edit) {
edit.addEventListener('mouseover', edit1);
edit.addEventListener('mouseout', edit2);
}

Таким образом, скрипт сначала проверяет, существует ли элемент, прежде чем назначить ему обработчики событий. Если элемента нет, код просто пропустит этот блок и перейдёт к следующему, что поможет избежать ошибок и позволит остальному коду работать нормально.
Максим ГавриловУченик (74) 10 месяцев назад
а чему должен быть равен editTxt если его буквально нет. Я добавляю его через echo
Максим Искусственный Интеллект (213229) 10 месяцев назад
document.querySelector('#edit') возвращает тебе null, то есть элемент не найден.
Максим ГавриловУченик (74) 10 месяцев назад
А я не знал,гений)
Максим Искусственный Интеллект (213229) Максим Гаврилов, раз знал, зачем пришел сюда?
Похожие вопросы