Ich verwende CreateJS / EaselJS, um meine Inhalte zu erstellen.

Ich möchte eine kurze Verzögerung einfügen, bis dem Benutzer zusätzliche Inhalte zur Verfügung stehen. Es ist wichtig, die verbleibende Zeit anzuzeigen!

Meine Lösung:

myLabel.text = "5";
setTimeout(function(){ myLabel.text = "4";
 setTimeout(function(){ myLabel.text = "3";
  setTimeout(function(){ myLabel.text = "2";
   setTimeout(function(){ myLabel.text = "1";
    setTimeout(function(){
     myLabel.text = "0";
     myButton.addEventListener('click', myFunction);
    }, 1000);
   }, 1000);
  }, 1000);
 }, 1000);
}, 1000);

Ist das mit kürzerem Code möglich?

Bonus: Übergeben Sie eine Variable als Countdown-Dauer (z. B. 5000 für 5 Sek.)

Ich hoffe auf eine schnelle Antwort, Simon

1
SimonM 21 Aug. 2015 im 20:33

3 Antworten

Beste Antwort

Verwenden Sie stattdessen setInterval:

var myNumber = 5;
myLabel.text = myNumber;
var myInterval = setInterval(function() {
     myLabel.text = --myNumber;
     if (myNumber === 0) {
         myButton.addEventListener('click', myFunction);
         clearInterval(myInterval);
     }
}, 1000);
0
taxicala 21 Aug. 2015 im 17:37

Rufen Sie die Dekrementierungsfunktion auf, wenn Sie den Countdown starten möchten.

var remaining = 5;

function decrement(){
    myLabel.text = remaining;
    remaining--;
    if(remaining >= 0){
        setTimeout(decrement, 1000);   
    }
}
0
Dan Truitt 21 Aug. 2015 im 17:41

Dieser Code erstellt einen Countdown (Geige):

<div id="myLabel"></div>

var myLabel = document.getElementById('myLabel');

function countdown(duration) {
    myLabel.innerText = duration;

    if(duration > 0) {
        setTimeout(function() {
            countdown(duration - 1);
        }, 1000);
    } else {
        myButton.addEventListener('click', myFunction);
    }       
}

countdown(8);
0
Ori Drori 21 Aug. 2015 im 18:15