Hallo,
ich habe li-Elemente, die sich per "click" öffnen lassen. Das click-Event hänge ich per addEventListener an. Beim Öffnen gebe ich als Parameter diverse Informationen mit, die dann in view_person() angezeigt werden.
var li = liste_view_inc.querySelectorAll("li");
function click_view_person(li) {
view_person(li.dataset.id, li.dataset.modus, li.dataset.vorname, li.dataset.nachname, li.dataset.telefon, li.dataset.email, li.dataset.notiz, li.dataset.anwesend);
}
for(let i=0; i < li.length; i++) {
li[i].addEventListener("click", function() {
click_view_person(li[i]);
});
}
Das funktioniert auch. Nun gibt es noch einen weiteren Modus, der den Listeneintrag nicht öffnet, sondern auswählt. Dazu möchte ich das "click"-Event der li-Elemente entfernen und ein neues hinzufügen.
liste_nav_menue_ausw.addEventListener("click", function() {
for(let i=0; i < li.length; i++) {
li[i].removeEventListener("click", click_view_person);
li[i].addEventListener("click", function(){
// select-Funktion
});
}
});
Das funktioniert leider nicht. Die Funktion des zweiten Event-Listeners wird zugefügt, die erste bleibt aber ebenfalls erhalten. Das remove funktioniert nur, wenn ich eine test-Funktion ohne Parameter anhänge. Also so...
var li = liste_view_inc.querySelectorAll("li");
function test() {
console.log("test");
}
for(let i=0; i < li.length; i++) {
li[i].addEventListener("click", test);
}
liste_nav_menue_ausw.addEventListener("click", function() {
for(let i=0; i < li.length; i++) {
li[i].removeEventListener("click", test);
li[i].addEventListener("click", function(){
// select-Funktion
});
}
});
Gehe ich das grundsätzlich falsch an oder bin ich kurz vor der Lösung? Ich hab irgendwie gerade ein Brett vorm Kopf.
Schöne Grüße
Nico