|
Не работает onclick
let flips = document.querySelectorAll('.flip'); onclick = (event) => { if(flips[5] === event.target) { alert("hello"); } ... //другие работающие функции } Почему не выводится hello при клике на флипс? Ошибок никаких не показывает и просто не хочет работать, но работает с другим вариантом: flips[5].onclick = () => { alert('hello'); } Оба варианта ведь должны работать, разве нет? |
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <div class="flip">0</div> <div class="flip">1</div> <div class="flip">2</div> <div class="flip">3</div> <div class="flip">4</div> <div class="flip">5</div> <script> let flips = document.querySelectorAll('.flip'); flips.forEach((el,i)=>el.onclick = (event) => { if(i==5) alert("hello"); }); </script> </body> </html> У вас обработчик на воздух навешивается? |
В первом варианте клик считывается на всех элементах и таргет указывает, на каком именно элементе клик нужен, разве нет?
|
Цитата:
Но код работает <html> <head> <meta charset = "utf-8" /> <style> </style> </head> <body> <div class = "flip">flip</div> <div class = "flip">flip</div> <div class = "flip">flip</div> <div class = "flip">flip</div> <div class = "flip">flip</div> <div class = "flip">flip</div> <div class = "flip">flip</div> <div class = "flip">flip</div> <div class = "flip">flip</div> <div class = "flip">flip</div> <div class = "flip">flip</div> <div class = "flip">flip</div> <div class = "flip">flip</div> <div class = "flip">flip</div> <div class = "flip">flip</div> <script> const flips = document.querySelectorAll(".flip") onclick = function(event){ if(flips[2] === event.target) alert(100) } </script> </body> </html> Посмотрите, нет ли других ошибок |
Не выдаёт никаких ошибок и работает только при навешивании клика на каждый элемент, без понятия почему
|
Dimasikylll, вы все обработчики события click вешаете через свойство и на глобальный объект window?
Почитайте: https://learn.javascript.ru/introduc...82%D0%B2%D0%BE |
Я не вешаю несколько обработчиков на один элемент. Либо проверяю клик через window, либо просто вешаю клик на элемент. По отдельности оба способа должны работать, но у меня работает только при навешивании клика на элемент.
|
Цитата:
С другой стороны, расхваливаемые им функции, типа addEventListener имеют свои недостатки, и они даже, по-моему, посерьезней Так что этот способ вполне годный. Нет смысла отказываться от него. |
Если что-то не получается или работает не как ожидалось, можно вывести в в консоль
onclick = event => { console.log(event, event.target); }; |
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 22:40. |
|