JavaScript中带变量的倒计时

JavaScript中带变量的倒计时,javascript,timeout,countdown,easeljs,createjs,Javascript,Timeout,Countdown,Easeljs,Createjs,我正在使用CreateJS/EaselJS构建我的内容 我想插入一个短暂的延迟,直到用户可以获得一些额外的内容。显示剩余时间很重要 我的解决方案: myLabel.text = "5"; setTimeout(function(){ myLabel.text = "4"; setTimeout(function(){ myLabel.text = "3"; setTimeout(function(){ myLabel.text = "2"; setTimeout(function()

我正在使用CreateJS/EaselJS构建我的内容

我想插入一个短暂的延迟,直到用户可以获得一些额外的内容。显示剩余时间很重要

我的解决方案:

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);
用更短的代码可以吗

奖励:将一个变量作为倒计时时间传递(例如5000秒)


我希望能得到一个快速的答案,Simon

当你想开始倒计时时,调用减量功能

var remaining = 5;

function decrement(){
    myLabel.text = remaining;
    remaining--;
    if(remaining >= 0){
        setTimeout(decrement, 1000);   
    }
}

要开始倒计时时,请调用减量函数

var remaining = 5;

function decrement(){
    myLabel.text = remaining;
    remaining--;
    if(remaining >= 0){
        setTimeout(decrement, 1000);   
    }
}

改用
setInterval

var myNumber = 5;
myLabel.text = myNumber;
var myInterval = setInterval(function() {
     myLabel.text = --myNumber;
     if (myNumber === 0) {
         myButton.addEventListener('click', myFunction);
         clearInterval(myInterval);
     }
}, 1000);

改用
setInterval

var myNumber = 5;
myLabel.text = myNumber;
var myInterval = setInterval(function() {
     myLabel.text = --myNumber;
     if (myNumber === 0) {
         myButton.addEventListener('click', myFunction);
         clearInterval(myInterval);
     }
}, 1000);

此代码创建倒计时():


var myLabel=document.getElementById('myLabel');
功能倒计时(持续时间){
myLabel.innerText=持续时间;
如果(持续时间>0){
setTimeout(函数(){
倒计时(持续时间-1);
}, 1000);
}否则{
myButton.addEventListener('click',myFunction);
}       
}
倒计时(8);

此代码创建倒计时():


var myLabel=document.getElementById('myLabel');
功能倒计时(持续时间){
myLabel.innerText=持续时间;
如果(持续时间>0){
setTimeout(函数(){
倒计时(持续时间-1);
}, 1000);
}否则{
myButton.addEventListener('click',myFunction);
}       
}
倒计时(8);

快速回答:使用
setInterval()
@JohnBupit,这样应该可以工作!谢谢快速回答:使用
setInterval()
@JohnBupit应该可以工作!谢谢,为什么要在超时后运行超时?当超时结束时,它将执行该函数,在下一个超时在事件循环中排队之前需要几毫秒的时间。interval将保持函数执行,而无需再次将其推送到事件循环。setInterval和setTimeout不是精确的时间保持器。倒数x秒不是时间关键,setTimeout将把函数添加到javascript队列中,这样系统就可以方便地运行,setInterval将在任何可能的时候尝试运行它。换句话说,这是我更喜欢的,如果setInterval让你的生活更好,那么对你有好处:)为什么要在超时后运行超时?当超时结束时,它将执行该函数,在下一个超时在事件循环中排队之前需要几毫秒的时间。interval将保持函数执行,而无需再次将其推送到事件循环。setInterval和setTimeout不是精确的时间保持器。倒数x秒不是时间关键,setTimeout将把函数添加到javascript队列中,这样系统就可以方便地运行,setInterval将在任何可能的时候尝试运行它。换句话说,这是我更喜欢的,如果setInterval让你的生活更好,那么对你也有好处:)