Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Если элемента нет, а в скрипте есть для него функция (https://javascript.ru/forum/misc/73338-esli-ehlementa-net-v-skripte-est-dlya-nego-funkciya.html)

MC-XOBAHCK 07.04.2018 23:05

Если элемента нет, а в скрипте есть для него функция
 
Здравствуйте!
Подскажите как правильно пишут скрипт в таком случае.
Есть кнопка .btnLogin на которую стоит обработчик события. Кнопка вызывает форму авторизации.
Если пользователь залогинен, то кнопка не выводится в html, а скрипт выдаёт ошибку. Консоль указывает на функцию.

Сама функция:
var btnLogin = document.querySelector('.btnLogin');

btnLogin.addEventListener('click', function() {
	document.querySelector('.overlayPopup').style.display = 'block';
	document.querySelector('.popupLog').style.display = 'block';
})


Как вариант можно скрипт разделить на два и выводить по отдельности - один для авторизированных, второй для посетителей. Но наверно это не лучшее решение.

j0hnik 07.04.2018 23:18

var btnLogin = document.querySelector('.btnLogin');
if(btnLogin){
btnLogin.addEventListener('click', function() {
	document.querySelector('.overlayPopup').style.display = 'block';
	document.querySelector('.popupLog').style.display = 'block';
});
}

ruslan_mart 07.04.2018 23:29

j0hnik, length тут явно лишний.

MC-XOBAHCK 07.04.2018 23:35

ruslan_mart, спасибо за подсказку. С length давало ошибку. Убрал - заработало.

j0hnik 07.04.2018 23:42

ruslan_mart,
Да, спасибо, автоматом


Часовой пояс GMT +3, время: 22:13.