|
Не работает 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, время: 00:08. |
|