2 my 00 my_00 于 2016.04.21 17:09 提问

jsp 页面为多个标签 用for()循环 分别添加多个计时器!在线等!谢谢啦!!
 jsp 页面为多个标签 用for()循环 分别添加多个计时器!在线等!谢谢啦!!

下面这样写,结果所有span都执行同一个计时器!如何修改??

 for(var i = 0;i<$(".input").size();i++){
        i = i;
        alert(i);
        ordertime=$(".input")[i].value;
        alert(ordertime);
        ordertime=ordertime.replace("-","/");
        ordertime=ordertime.replace("-","/");
        //alert(ordertime);
         var ordertime=new Date(ordertime);
        // alert(ordertime);
         var nowtime=new Date();
        maxtime = (ordertime.getTime()-nowtime.getTime())/1000+30*60;
         alert(maxtime);
         var timer = setInterval( function CountDown(){ 
             //alert(maxtime);
             if(maxtime>=0){  
                 minutes = Math.floor(maxtime/60);  
                 seconds = Math.floor(maxtime%30);  
                 msg = "距离结束还有"+minutes+"分"+seconds+"秒";  
                 //alert(msg);
                // var i = 0;
                 //alert(i);
                 $(".span")[i].innerHTML=(msg);
                 //alert();
                 //document.getElementById("timer").innerHTML=msg;  
                 if(maxtime == 5*30) alert('注意,还有5分钟!');  
                 --maxtime; 
                 //continue;
                // break;
                 }  
                 else{  
                 clearInterval(timer);  
                 //alert("时间到,结束!");  
                 //continue;
                 }  
                 },1000);

    }

1个回答

w172087242
w172087242   Ds   Rxr 2016.04.21 17:37

这句话就得i变量产生了闭包;
还有就是你的循环效率特别低,每次都要考jQuery去选择。

修改方法:
for循环之外定义如下两个变量(提高效率);
var inputs = $(".input");
var spans = $(".span");

for循环改变:
for(var i=0,size=inputs.size;i<size;i++){//减少去size的步骤
var index = i;
....
ordertime=inputs[index].value;
...
spans[index].innerHTML=msg;
}

my_00
my_00 还有问题,你帮忙看看!
一年多之前 回复
my_00
my_00 Thank you !
一年多之前 回复
w172087242
w172087242 size忘记加()了,或者把size改成length
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!