Я пытаюсь скрыть все элементы в классе (логотипы), за исключением элемента, на который нажата кнопка. Поэтому я написал это только для того, чтобы понять, что невозможно передать аргументы функциям, активируемым addEventListener! Это кажется ... негибким, если не сказать больше. Есть ли еще один очевидный способ передать аргумент, что я слепой (я довольно новичок в Javascript)?Есть ли способ передать аргумент addEventListener?
<!DOCTYPE html>
<head>
<link rel="stylesheet" type="text/css" href="index.css">
<title>Sexism in Silicon Valley</title>
</head>
<body id="body1">
<div class="parent">
<img src="kstartup.png" class="logos" id="id1">
<img src="uber.png" class="logos" id="id2">
<img src="kpcb.png" class="logos" id="id3">
<img id="id4" src="r1startup.png" class="logos">
</div>
<div class="parent" id="parent2">
<img src="zillow.png" class="logos" id="id5">
<img src="github.png" class="logos" id="id6">
<img src="tinde.png" class="logos" id="id7">
<img src="snapchat.png" class="logos" id="id8">
</div>
<script src="index.js"></script>
</body>
</html>
Javascript:
function click(x) {
for (var i = 0; i < logos.length; i++) {
if (x !== i) {
logos[i].style.display = "hidden";
}
}
}
var logos = document.getElementsByClassName("logos");
for (var i = 0; i < logos.length; i++) {
logos[i].addEventListener('click', click(i));
}
'... addEventListener ('click', (function (i) {return function() {click (i);}}) (i))'. – Amadan
Проверьте ** событие делегирование **, которое позволяет прикрепить событие к элементу более высокого уровня для записи событий для своих детей. Вы можете использовать ** event.target ** для получения информации об элементе, который был нажат, и вам понадобится только один прослушиватель событий. – user2182349