addEventListener - Blockzuweisung
Wenn beispielweise eine Navigation "UL" erstellt wird,
ist man gezwungen, das Event "click" über eine
Schleife oder Ähnlichem zuzuweisen.
In unserem Beispiel übernimmt dies eine For-Schleife. Die Anzahl der Durchläufe wird ermittelt, indem wir die Liste durchzählen. Hierfür gibt es mehrere Möglichkeiten, ich benutze hierfür querySelectorAll( 'ul.beispiel-ul li' ).
Der querySelector gibt hier ein Array mit allen LI-Elemente zurück, was sehr praktisch ist. Denn so haben wir die Anzahl der LI-Tags als auch alle weiteren Informationen jedes einzelnen LI-TAG's.
Doch sehen wir uns das Beispiel genauer an.
Kopiert Euch gerne den Code und probiert es aus: Code
In unserem Beispiel übernimmt dies eine For-Schleife. Die Anzahl der Durchläufe wird ermittelt, indem wir die Liste durchzählen. Hierfür gibt es mehrere Möglichkeiten, ich benutze hierfür querySelectorAll( 'ul.beispiel-ul li' ).
Der querySelector gibt hier ein Array mit allen LI-Elemente zurück, was sehr praktisch ist. Denn so haben wir die Anzahl der LI-Tags als auch alle weiteren Informationen jedes einzelnen LI-TAG's.
Doch sehen wir uns das Beispiel genauer an.
Kopiert Euch gerne den Code und probiert es aus: Code
Beispiel
- Klick mich
- Klick mich
- Klick mich
- Klick mich
Code
HTML: <ul class="beispiel-ul"> <li id="bsp-li-0">Klick mich</li> <li id="bsp-li-1">Klick mich</li> <li id="bsp-li-2">Klick mich</li> <li id="bsp-li-3">Klick mich</li> </ul>
CSS: ul.beispiel-ul li.selected { background-color: #FFF; color: #000; }
JavaScript: // Nur wenn die Liste vorhanden ist if( document.querySelectorAll( 'ul.beispiel-ul' ) ){ // LI's ermitteln => Rückgabe Array const liElem = document.querySelectorAll( 'ul.beispiel-ul li' ); // Anzahl der LI's ermitteln => length const liElemLength = liElem.length; for(let i = 0; i < liElemLength; i++){ // Event zuweisen liElem[i].addEventListener('click', () => { // Funktion zuweisen und die jeweilige id übergeben machWas(liElem[i].id); }); } function machWas(id){ // Klasse 'selected' zuweisen document.querySelector('#'+id).classList.add('selected'); } }