请各位大侠帮帮忙,我这个方法在javascript里面为什么不能循环

<body><divid="show_time1"name="myid">1</div><divid="show_time2"name="myid">2</div><di... <body>
<div id="show_time1" name="myid">1 </div>
<div id="show_time2" name="myid">2 </div>
<div id="show_time3" name="myid">3 </div>
<script type="text/javascript">
var num=document.getElementsByName('myid');
for(var i=0;i<num.length;i++)
{
var n=num[i].innerHTML;
var count="huifu"+n;
// alert(count);
var idt="show_time"+n;
//alert(idt);
// alert("countdown"+n);
function count(){
var show_time = document.getElementById(idt);
endtime = new Date("05/02/2015 12:59:59");//结束时间
today = new Date();//当前时间
delta_T = endtime.getTime() - today.getTime();//时间间隔
// document.write(delta_T);
if(delta_T < 0){
clearInterval(auto);
show_time.innerHTML = "倒计时已经结束";
}
window.setTimeout(count,1000);
total_days = delta_T/(24*60*60*1000);//总天数
total_show = Math.floor(total_days);//实际显示的天数
total_hours = (total_days - total_show)*24;//剩余小时
hours_show = Math.floor(total_hours);//实际显示的小时数
total_minutes = (total_hours - hours_show)*60;//剩余的分钟数
minutes_show = Math.floor(total_minutes);//实际显示的分钟数
total_seconds = (total_minutes - minutes_show)*60;//剩余的分钟数
seconds_show = Math.floor(total_seconds);//实际显示的秒数
show_time.innerHTML = "距离结束还有:" + total_show + "天" + hours_show + "时" + minutes_show + "分" + seconds_show + "秒";
}
count();

}
</script>
</body>
展开
 我来答
yingjianglinx
2015-04-28 · 超过33用户采纳过TA的回答
知道答主
回答量:73
采纳率:0%
帮助的人:65.7万
展开全部

距离结束还有:3天19时10分13秒

距离结束还有:3天19时10分13秒

距离结束还有:3天19时8分49秒


我运行的时候 第3条倒是可以运行的,前2条都不动的


。。。。。。 是前2条没动对吧

因为你这种写法函数运行的时候已经形成闭包了,当count函数运行的时候,比如idt的这个值一定是最后一次循环的值,因为count执行的时候,会去查找当前的idt变量,而当前idt变量实际上已经循环完3次了 ,所以永远只会在最后一个元素里显示时间!


下面的例子可以给你做测试

//这个列子永远都是弹出4,而不是每次循环的值
for(var i=1;i<4;i++){
    $("#show_time"+i).click(function(){
        alert(i);
    });
}
追问
能 把你那代码发给我么, 我在这边运行 只有一条显示  距离结束还有:3天19时8分49秒
追答
还有不要用count函数名 我用google游览器,报错,估计是关键字,建议改一下函数名称
qq1111qq111111
2015-04-28 · TA获得超过1175个赞
知道小有建树答主
回答量:1166
采纳率:66%
帮助的人:611万
展开全部
<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <meta name="Generator" content="EditPlus®">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <title>Document</title>
 </head>
<body>
<div id="show_time1" name="myid">1 </div>
<div id="show_time2" name="myid">2 </div>
<div id="show_time3" name="myid">3 </div>
<div id="idt"></div>
<script type="text/javascript"> 

function counts(){
   var show_time = document.getElementById("idt");
   endtime = new Date("05/02/2015 12:59:59");//结束时间
   today = new Date();//当前时间
   delta_T = endtime.getTime() - today.getTime();//时间间隔
    // document.write(delta_T);
    if(delta_T < 0){
        clearInterval(auto);
        show_time.innerHTML = "倒计时已经结束";
    }
    window.setTimeout(counts,1000);
    total_days = delta_T/(24*60*60*1000);//总天数
    total_show = Math.floor(total_days);//实际显示的天数
    total_hours = (total_days - total_show)*24;//剩余小时
    hours_show = Math.floor(total_hours);//实际显示的小时数
    total_minutes = (total_hours - hours_show)*60;//剩余的分钟数
    minutes_show = Math.floor(total_minutes);//实际显示的分钟数
    total_seconds = (total_minutes - minutes_show)*60;//剩余的分钟数
    seconds_show = Math.floor(total_seconds);//实际显示的秒数
    show_time.innerHTML = "距离结束还有:" + total_show + "天" + hours_show + "时" + minutes_show + "分" + seconds_show + "秒";
}
var num=document.getElementsByName('myid');
for(var i=0;i<num.length;i++)
{
  var n=num[i].innerHTML;
   var count="huifu"+n;
  // alert(count);
   var idt="show_time"+n;
   //alert(idt);
//  alert("countdown"+n);
counts();

}
</script>
</body>
</html>

1,你的function count与全局变量重复,导致被覆盖,帮你替换成counts

2,你的fun不要放在循环中,放在外面就行

3,你的显示的dom没有,我给你加了一个

更多追问追答
追问
您好,我想再for 里面循环多次 function counts(). 大侠可以留个QQ 么,谢谢
追答
你想循环多次方法的话多调用几次就行了啊
1810095497
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式