Ich weiß nicht, wo ich mit diesem Code falsch liege.SetInterval-Methode in einem Click-Event-Handler
Was ich suche:
Eine Liste von Registerkarten, auf dem eine Animation beginnt zu klicken und auf wieder klicken, stoppt er. Ich beabsichtige es mit setInterval (nur zum Üben).
Hier ist der Code, den ich zu verwenden Ich versuche:
function writeMe() {
var p = document.createElement("p");
p.innerHTML = "List 1";
var ilu = document.getElementById("ilu");
ilu.appendChild(p);
if (ilu.getElementsByTagName("p").length === 5) {
ilu.innerHTML = "";
}
}
var li = document.getElementsByTagName("li");
for(i=0;i<li.length;i++) {
li[i].addEventListener("click", function(e) {
if (this.style.backgroundColor == "yellow") {
this.style.backgroundColor = "";
clearInterval(writeMe);
} else {
for(i=0;i<li.length;i++) {
li[i].style.backgroundColor = "";
}
this.style.backgroundColor = "yellow";
var writeMe = setInterval(writeMe, 1000);
writeMe();
}
e.stopPropagation();
});
}
Meine Logik ist:
Die For-Schleife die Klick Bedingungen auf jedem der Li setzt. Wenn sie jetzt angeklickt werden, rufen sie die setInterval-Funktion auf und wenn sie erneut geklickt wird, stoppen sie sie.
Wohin gehe ich falsch? Vielen Dank.
'writeMe' ist keine Funktion, wenn Sie den gleichen Variablennamen im Ereignis-Listener zuweisen. Es ist die Timer-ID. Sollte in der Browser-Konsole ein Fehler angezeigt werden, der besagt, dass es keine Funktion ist – charlietfl
Danke. Ich habe den Variablennamen writeMe in tellMe geändert. Hier ist die [JSBin] (http://jsbin.com/jibitil). Zwei Probleme, denen ich jetzt gegenüberstehe: 'clearInterval() funktioniert nicht' und während ich weiter auf die Tabs klicke, beschleunigt sich die' Animation'! – SamC
@SamC, überprüfen Sie [meine Antwort] (http://Stackoverflow.com/a/43953682/2545680) –