2 my 00 my_00 于 2016.04.21 22:05 提问

jsp 页面显示问题:spans[i].innerHTML=msg不显示什么原因?在线等!谢谢啦!!

jsp 页面显示问题:spans[i].innerHTML=msg;不显示;spans[0~4].innerHTML=msg;显示!什么原因?在线等!谢谢啦!!

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

2个回答

danielinbiti
danielinbiti   Ds   Rxr 2016.04.21 23:28
 参数不对,
 spans[i].innerHTML这里运行的时候i已经是size的值了,定时部分用闭包解决变量冲突问题。setInterval用setTimeout
 (function(i,maxtime){
           var CountDown = function(){ 
             if(maxtime>=0){  
                minutes = Math.floor(maxtime/60);  
                seconds = Math.floor(maxtime%30);  
                msg = "距离结束还有"+minutes+"分"+seconds+"秒";  
                // alert(msg);
                spans[i].innerHTML=msg;
                 //document.getElementById("timer").innerHTML=msg;  
                 if(maxtime == 5*30) alert('注意,还有5分钟!');  
                 --maxtime;  
                 setTimeout(CountDown ,1000);
              }  
                 else{  
                 console.log("时间到,结束!");  
                 }  
                 }
           setTimeout(CountDown  ,1000);
        }(i,maxtime));
caozhy
caozhy   Ds   Rxr 2016.04.21 22:09

写在onready里看看,onload可能一些html元素还没有加载

my_00
my_00 spans[i].innerHTML=msg; i=0~4...可以显示 但是计时的秒数有问题,乱了?
一年多之前 回复
my_00
my_00 onready是这样吗?$(document).ready(function(){}
一年多之前 回复
my_00
my_00 spans[i].innerHTML=msg; i=0~4...可以显示
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!