Когда страница загружается в первый раз, вы устанавливаете обработчик событий single :
window.onclick=confPopUp;
Позже, когда в любом месте окна есть щелчок, запускается ваш confPopUp
функция, которая подключает обработчики щелчков к элементам .redPic
.
Позже, если вы щелкнете по элементу .redPic
, ваша функция redConf
запустится.
Если вы хотите .redPic
элементов, чтобы их обработчики подключались при загрузке страницы, вызывайте confPopUp
вместо того, чтобы делать это обработчиком кликов. Измените:
window.onclick=confPopUp;
на
confPopUp();
Убедитесь, что этот код работает после элементов .redPic
. Есть несколько способов сделать это, выберите тот, который подходит вашим целевым браузерам и предпочтениям:
Поместите код в тег script
в конце документа, непосредственно перед закрывающий тег </body>
. Это работает со всеми браузерами, независимо от того, сколько лет.
В даже смутно современных браузерах вызовите confPopUp
из обработчика событий DOMContentLoaded
:
document.addEventListener("DOMContentLoaded", confPopUp);
В современных браузерах добавьте атрибут defer
к тегу script
.
В современных браузерах добавьте type="module"
к тегу script
сделать ваш скрипт модулем. Это откладывает это так же, как defer
, и переводит его в строгий режим (что является хорошей идеей) и помещает код в него в область видимости модуля, а не в глобальную область видимости (которая действительно переполнена).
Так почему же это сработало вчера? Предположительно, потому что вы щелкали по окну, не осознавая этого, вызывая тот начальный обработчик событий, который подключал элементы .redPic
. Сегодня случилось так, что вы не щелкали окно до того, как пытались щелкнуть элемент .redPic
, поэтому вы обнаружили эту проблему. Проблема была там все время.