2016-09-15 49 views
-2

Kann jemand sagen, warum das nicht funktioniert? Es funktioniert mit alert(), aber nicht, wenn ich versuche, .css zu verwenden. Ich muss definitiv JavaScript-Schleife verwenden.Einfache JavaScript-Schleife + jQuery

$(".select-buttons a").on("click", function() { 
 
    var counter = 0; 
 
    var i = setInterval(function() { 
 
     $(".name").css("background", "red"); 
 
     counter++; 
 
     if (counter === 3) { 
 
      clearInterval(i); 
 
     } 
 
    }, 1000); 
 
});

+2

Bitte fügen Sie eine [mcve] ein, sonst ist diese Frage [off-topic (# 1)] (/ help/on-topic). – zzzzBov

+6

Was genau versuchst du zu tun? Wenn Sie den Hintergrund in Rot ändern, was passiert beim zweiten Mal? Der Hintergrund ist bereits rot. – Santi

+1

welcher Teil funktioniert nicht? setInterval? Hintergrund einstellen, feuern klicken? zeige auch etwas html. Und clearInterval wird den Hintergrund nicht zurücksetzen. –

Antwort

0

dieser Code So funktioniert einwandfrei. Alle 1 Sekunde (1000 ms) wird die Hintergrundfarbe auf Rot gesetzt. Das Problem ist, dass es keinen Code gibt, der jemals eine andere Farbe setzt! Dies bedeutet, dass das Element mit der zuvor eingestellten Hintergrundfarbe beginnt und nach dem Klicken auf die Schaltfläche eine Sekunde wartet, zu Rot wechselt, eine Sekunde wartet, zu Rot wechselt, eine Sekunde wartet, zu Rot wechselt und dann anhält (immer noch rot, wie es die ganze Zeit war).

Es sieht so aus, als ob Sie erwartet hätten, dass der clearInterval() Aufruf die Hintergrundfarbe zurücksetzt, aber in dem, was es tatsächlich tut, ist das Intervall zu stoppen, um die Farbe immer wieder auf Rot zu setzen.

Angenommen, Sie haben versucht, das Element rot blinken zu lassen, müssten Sie die Farbe tatsächlich auf die ursprüngliche Farbe zurücksetzen. Sie könnten versuchen, etwas wie this oder eine bessere Lösung zu finden!