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 还有问题,你帮忙看看!
大约 2 年之前 回复
my_00
my_00 Thank you !
大约 2 年之前 回复
w172087242
w172087242 size忘记加()了,或者把size改成length
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
实现页面的多个倒计时效果
&amp;lt;!DOCTYPE html&amp;gt; &amp;lt;html&amp;gt; &amp;lt;head&amp;gt; &amp;lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&amp;gt; &amp;lt;title&amp;gt;Jquery实现页面的多个倒计时&amp;lt;/title&amp;gt; &amp;lt;/head&amp;gt
jquery实现页面多个不同倒计时
思路有两种 第一种是要动态的 思路是这样的,就是我们创建两个函数,一个函数用来发送post请求到后台的php,拿到了所有的截止时间,然后使用回调函数处理这个剩余时间,减去当前的服务器时间,最后经过格式化为倒计时的显示的时间,然后放入到页面中.这个时候就会显示一个剩余的时间,但是只有在下次请求的时候才会再次显示剩余的时间. 函数二就是直接获取页面中的显示时间的元素里
jquery 页面多个倒计时
Jquery实现团购列表页的多个倒计时 $(function(){ updateEndTime(); }); //倒计时函数 function updateEndTime() { var date = new Date(); var time = date.getTime(); //当前时间距1970年1月1日之间的毫秒数 $(".settime").each(f
一个页面多个倒计时 js
jQuery倒计时(CountDown)小插件 可以用于一个页面多个倒计时,调用也非常方便。 /*jquery.countdown.js*/(function($){ var countdown = function(item, config) { var seconds = parseInt($(item).attr(config.attribute
JSP页面 在标签中添加两个class属性
一点点小知识,在JSP页面中, 用到了input输入框,c但是其中的一个class需要匹配json文件,但又需要与原页面输入框的样式保持一致。 故经过查找资料等,最终找到了解决方法: 用空格将两个class名称分隔即可。具体实现如下:
NSTimer单循环和多循环定时器讲解
本文通过一个简单例子介绍了NSTimer单循环和多循环定时器的使用方法。
js中给多个class属性的标签赋值
根据ID给标签赋value值,document.getElementById("id").value="张三";当有多个class属性时,for(var i=0;i<10;i++){ document.getElementsByClassName("name")[i].value="李四"; }
JSP多个模块时解决方法
当一个页面有多个模块,最好的方式是:将每个模块抽离成一个单独的JSP。 界面简洁,易于查询问题所在。 (1)场景一 只有多个模块,不存在动态生成模块 JSP <%@page prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <c:import url="/admin/notice/noticeList"></c:import> J
jsp中使用<c:foreach>同时遍历两个list集合
现在jsp页面中加入: ${info.id} ${info.zdzName} ${info.ztempString} ${userNames[loop.count-1].name} 解
实现点击JSP页面的ul标签切换iframe
今天做项目遇到了一个问题,JSP页面左侧有一个ul列表,右部是一个H5的iframe标签,要求点击ul标签实现iframe的切换,最后用了jQuery解决了这个问题,初学乍练,记录一下实现经过,以便日后查看。 主页内容Index.jsp 论坛导航 推荐 咨询 人工智能 云计算/大数据 区块链 数据库 程序人生 游戏开发 计算机基础 研发管理 前端