请各位大侠帮帮忙,我这个方法在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> 展开
<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> 展开
展开全部
距离结束还有: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游览器,报错,估计是关键字,建议改一下函数名称
展开全部
<!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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询