вызовите addEventListener в цикле с переменной
Я новичок в JavaScript. У меня есть 6 элементов, которые я хочу оснастить очень похожими слушателями событий. У меня есть работающее решение для перебора, которое я хочу улучшить, но (я думаю) у меня проблемы с замыканиями Java Script.
Рабочий код:
elem = document.getElementById("court1button");
elem.addEventListener("click", wassern_id1, false);
elem = document.getElementById("court1xbutton");
elem.addEventListener("click", abbrechen_id1, false);
elem = document.getElementById("court2button");
elem.addEventListener("click", wassern_id2, false);
elem = document.getElementById("court2xbutton");
elem.addEventListener("click", abbrechen_id2, false);
... 4 more times ...
function wassern_id1(event) {
wassern(1, event)
}
function wassern_id2(event) {
wassern(2, event)
}
... 4 more times ...
function abbrechen_id1(event) {
abbrechen(1, event)
}
function abbrechen_id2(event) {
abbrechen(2, event)
}
... 4 more times ...
function wassern(id, event) { ...
function abbrechen(id, event) { ...
У меня простой цикл, который не работал, когда я нашелhttps://stackoverflow.com/a/2520602/2536029 и понимаю, почему это не могло работать. Затем я придумал следующий код, который тоже не работает, но теперь я теперь больше понимаю, почему он не работает. Может кто-нибудь объяснить мне и помочь мне создать рабочий код?
for (var id = 1; id <= 6; id++) {
elem = document.getElementById("court" + id + "button");
elem.addEventListener(
"click",
function(id2, event2){
wassern(id2, event2);
}(id, event),
false
);
elem = document.getElementById("court" + id + "xbutton");
elem.addEventListener(
"click",
function(id2, event2){
abbrechen(id2, event2);
}(id, event),
false
);
}
PS: проблема в том, чтоevent
не определен во время вызова
function wassern(id, event) { ... event.stopPropagation();