循环内的jQuery延迟

循环内的jQuery延迟,jquery,delay,Jquery,Delay,我想在jQuery中创建一个计时器,我想像这样更改每秒的span值,但是延迟不起作用 function startTimer(daysRemain,hoursRemain,minutesRemain,secondsRemain){ while(secondsRemain < 60){ secondsRemain++; $("span.secondRemain").delay(1000).text(sec

我想在jQuery中创建一个计时器,我想像这样更改每秒的span值,但是延迟不起作用

 function startTimer(daysRemain,hoursRemain,minutesRemain,secondsRemain){

            while(secondsRemain < 60){
               secondsRemain++;
               $("span.secondRemain").delay(1000).text(secondsRemain);  //change value of seconds each one second 
                // I try this way too!
               /* setTimeout(function(){
                    $("span.secondRemain").text(secondsRemain);
                },1000);*/

            }
功能启动计时器(daysRemain、hoursRemain、minutesRemain、secondsRemain){
而(秒数小于60){
secondsRemain++;
$($span.secondRemain”).delay(1000).text(secondsRemain);//每秒钟更改秒数
//我也试过这种方式!
/*setTimeout(函数(){
$(“span.secondRemain”).text(secondsRemain);
},1000);*/
}

延迟
仅适用于fx队列

标准计时器如下所示

var t = 0;
setInterval(function () {
    $('div').text(t);
    t += 1;
},1000);

.delay()
不会延迟您正在运行的javascript。它会进入动画队列,当队列到达该操作时,它会为延迟时间设置一个计时器,直到过了这么长的时间才继续执行队列中的下一个操作

因此,您不能在循环中使用它来进行javascript延迟。您需要像这样使用
setTimeout()

function startTimer(daysRemain,hoursRemain,minutesRemain,secondsRemain) {

     function nextTime() {
         if (secondsRemain < 60){
             secondsRemain++;
             $("span.secondRemain").text(secondsRemain);  //change value of seconds each one second 
             setTimeout(nextTime, 1000);
         }
     }
     nextTime();
}
功能启动计时器(daysRemain、hoursRemain、minutesRemain、secondsRemain){
函数nextTime(){
如果(秒主频<60){
secondsRemain++;
$($span.secondremaine”).text(secondsRemain);//每秒钟更改秒数
设置超时(下一个时间,1000);
}
}
nextTime();
}
您是否尝试过:

setInterval(function(){
   $("span.secondRemain").text(secondsRemain);
},1000);

嗯,你是对的,但是我也尝试了setTimeOut方法,但也不起作用。
setTimeOut
只会调用一次。你可以在初始
setTimeOut
内再次调用
setTimeOut
,或者使用
setInterval
查看我的编辑以了解基本计时器示例。