Frage zu JS Code?
Hey, was macht dieser Code genau?
Wandelt der den ".dropdown-toggle" onclick in ein "Active" Tag um?
Wie nutze ich diesen Tag dann? Kann ich das Tag dann vom Active Element mit unterpfaden nutzen, also "nav:active ul"?:
document.querySelectorAll(".dropdown-toggle").forEach(item => {
item.addEventListener("click", function (event) {
event.preventDefault();
this.classList.toggle("active");
});
});
Thx
3 Antworten
Der code fügt auf alle Elemente mit der Klasse dropdown-toggle einen Event Listener hinzu, der dann die Klasse "active" hinzufügt, bzw. entfernt.
Wenn ein Element mit drowndown-toggle angeklickt wird, bekommt es die Klasse "active". Wenn man es noch mal anklickt wird die Klasse "active" wieder entfernt.
danke! Auch an dich. ich will einfach endlich, hier im Mobile Media querry, die Dropdowns per klick öffnen können so das sie zwischen die menupnke erscheinen.
document.querySelectorAll(".dropdown-toggle")
Wählt alle Elemente aus, die die Klasse "dropdown-toggle" haben.
Anschließend wird jedem Element ein "click"-Event-Listener hinzugefügt, also eine Aktion, die beim Klicken auf das Element geschieht. Da werden folgende Aktionen zugewiesen:
event.preventDefault();
Die Standardaktion (z.B. Absenden des Formulars o.ä.) wird deaktiviert.
this.classList.toggle("active");
Die Klasse "active" wird getoggelt, also umgeschaltet. Das bedeutet, wenn das Element bereits die Klasse "active" hat, wird sie entfernt, wenn es die Klasse "active", nicht hat, bekommt es die Klasse "active" zusätzlich.
HTML-Elemente können beliebig viele Klassen haben, auf die Klasse, die zum Auswählen der Elemente benutzt wurde, hat das daher keinen Einfluss, es wird eben nur die Klasse "active" hinzugefügt oder entfernt, je nach dem, ob das Element sie zuvor hatte oder nicht. Es wird also quasi zwischen "active" und nicht "active" hin und her geschalten.
Nein, soweit ich das richtig lese nimmt er jedes Element mit der Klasse "dropdown-toggle" und fügt einen eventlistener hinzu, welcher auf einen Klick wartet und daraufhin die Klasse "active" hinzufügt.
Somit hast du dann dropdown-toggle und active an dem element.
Aber ein problem, das active verschwindet nie wieder, was wahrscheinlich nicht gewollt ist
verschwindet das active nciht wieder auf weiterem klicken hin?
Am einfachsten machst du's gefolgt:
Du setzt einen eventlistener an jedes dropdown. Das scheinst du soweit richtig gemacht zu haben. Das kannst du ggf sonst auch testen indem du ein console.log einbaust in dem eventlistener.
Innerhalb des eventlisteners setzt du dann bspw. Ein active an dieses dropdown, sofern keins existiert. Sofern eins existiert entfernst du's.
Beim CSS musst du dann noch die Elemente innerhalb des dropdowns verstecken und anzeigen, Jenachdem obs innerhalb eines dropdowns mit der Klasse active ist.
Ich hab's endlich geschafft....wie erschöpfend...aber nun beherrsche ich das ganze und das auf meiner Meinung nach einfachster Weise wie es möglich ist...ich hoffe es lohnt sich später mich da durch zu quälen. Danke dir!
ich will einfach endlich, hier im Mobile Media querry, die Dropdowns per klick öffnen können so das sie zwischen die menupnke erscheinen.
:https://codepen.io/McCoer/pen/emYpmxv