Ich bin etwas neu in Javascript und ich kann nicht genau herausfinden, was mit meinen Funktionen los ist.Wie man JavaScript Event Handler dynamisch mit einer Funktion definiert
Hintergrund: mein Skript soll Ihnen erlauben, eine Klasse entweder "toggler" oder "getoggelt" einem Element zuzuordnen, damit sie automatisch verknüpft werden. Wenn Sie also den Toggler an-/abwählen, wird das Toggle ein- und ausgeblendet sind viele Bibliotheken, die das können, aber leider kann ich sie in diesem Fall nicht verwenden)
Das Skript wird beim Pagenload ausgeführt und durchsucht die Elemente nach Einsen mit der Klasse "toggler" und weist dann seinen onclick-Handler entsprechend zu. Hier ist das Stück Code, ich habe Probleme mit:
function makeToggle() {
for (i=0;i<toggler.length;i++) {
toggler[i].onclick=function(){toggleSection(this,i)};
}
}
function toggleSection(obj,index) {
if (obj.checked==true) {
toggled[index].style.display="inline-block";
} else {
toggled[index].style.display="none";
}
}
„Die“ übergibt richtig und löst, was auch immer Checkbox, es anzuwenden, aber „Index“ ist immer auf die Länge des toggler Array statt inkrementiert werden. Zum Beispiel können die ersten und zweiten automatischen Umschalten der sollte Onclick sein:
onclick="toggleSection(this,0)"
onclick="toggleSection(this,1)"
Was sie tatsächlich eingestellt, für den (vorausgesetzt, ich habe 5 Elemente als toggler definiert):
onclick="toggleSection(this,5)"
onclick="toggleSection(this,5)"
Von dem, was ich ich denke, es ist ein Scoping-Problem, oder die Art und Weise gelesen habe ich die Funktion bin aufrufen, aber nichts, was ich gefunden habe, macht viel Sinn
die Antworten waren sehr hilfreich:
Sie es in Schauspieler hier sehen kann. Jbabeys ist die akzeptierte Antwort, weil es in etwas mehr Tiefe darüber geht, was tatsächlich mit einem Punkt auf Erklärung geschieht.Toller Link, um Verschlüsse zu verstehen – ctshiner