js 中 setInterval的执行次数问题
<scripttype="text/javascript">vartimeDao=100;functiondao(){divD.innerText=timeDao;if(...
<script type="text/javascript">
var timeDao=100;
function dao()
{
divD.innerText=timeDao;
if(timeDao==0)
{
return;
sh.close;
}
timeDao--;
var sh;
sh=setInterval("dao()",1000);
}
</script>
<div id="divD" onclick="dao()">sdfa</div>
当我单击一次!它的数字跳法是从100-->99-->97-->93-->85-->69-->37-->0
不是每秒自减1!!!!!!
我要的是1秒减1 展开
var timeDao=100;
function dao()
{
divD.innerText=timeDao;
if(timeDao==0)
{
return;
sh.close;
}
timeDao--;
var sh;
sh=setInterval("dao()",1000);
}
</script>
<div id="divD" onclick="dao()">sdfa</div>
当我单击一次!它的数字跳法是从100-->99-->97-->93-->85-->69-->37-->0
不是每秒自减1!!!!!!
我要的是1秒减1 展开
展开全部
虽然是老问题了,但是好像没看到有人解释一下为什么出错,上来给大家补一个
setInterval被包含在Interval所调用的函数里了,这就意味着每次循环,都会再启动一个Interval
也就是说,第一次的循环
timeDao--;
计数100 - 1 = 99
并且添加一个新的循环 (当前有 2 个循环进程)
第二次循环
99 - 1 = 98
98 - 1 = 97
并且两个现有循环各添加一个新的循环(当前有 4 个循环进程)
第三次循环
97 - 1 = 96
96 - 1 = 95
95 - 1 = 94
94 - 1 = 93
... (不用再往下写了,相信已经说明了问题)
以下为修改代码:
<script type="text/javascript">
var sh = null; // 时钟对象
var timeDao = 100; // 计数器
// FUNCTION :: dao ()
// 计数递减函数
function dao () {
divD.innerText = timeDao;
if(timeDao == 0) {
if (sh != null) clearInterval(sh);
sh = null;
return;
}
timeDao--;
}
// FUNCTION :: startsh ()
// 启动计时器
function startsh () {
sh = setInterval("dao()", 1000);
}
</script>
<div id="divD" onclick="startsh()">sdfa</div>
展开全部
<script type="text/javascript">
var timeDao=100;
var sh = null;
function dao()
{
divD.innerText=timeDao;
if(timeDao==0)
{
return;
sh.close;
}
timeDao--;
if(sh==null)sh=setInterval("dao()",1000);
}
</script>
<div id="divD" onclick="dao()">sdfa</div>
var timeDao=100;
var sh = null;
function dao()
{
divD.innerText=timeDao;
if(timeDao==0)
{
return;
sh.close;
}
timeDao--;
if(sh==null)sh=setInterval("dao()",1000);
}
</script>
<div id="divD" onclick="dao()">sdfa</div>
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该这样子就好了
<script type="text/javascript">
var timeDao=100;
var i=1;
function dao()
{
divD.innerText=timeDao;
if(timeDao==0)
{
return;
sh.close;
}
timeDao=timeDao-i>0?timeDao-i:0;
i=i*2;
var sh;
sh=setInterval("dao()",1000);
}
</script>
<div id="divD" onclick="dao()">sdfa</div>
<script type="text/javascript">
var timeDao=100;
var i=1;
function dao()
{
divD.innerText=timeDao;
if(timeDao==0)
{
return;
sh.close;
}
timeDao=timeDao-i>0?timeDao-i:0;
i=i*2;
var sh;
sh=setInterval("dao()",1000);
}
</script>
<div id="divD" onclick="dao()">sdfa</div>
追问
没好~~~~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询