么么哒小七
2015-04-28 10:56
在十四行用setTimeout()调用和用setInterval()调用函数为什么会不一样。setTimeout() ,setInterval()他们有什么区别?
我给你注释一下JS代码吧。
var num=0; //定义变量num并赋值为0
function startCount() { //定义函数startCount
document.getElementById('count').value=num; //获取id为count并赋值为num
num=num+1; //这个就不用解释了吧
setTimeout("startCount()",1000); //setTimeout间隔1000毫秒去调用startCount函数
}
setInterval("startCount()",1000); //setInterval间隔1000毫秒去调用startCount函数
其实你用setInterval方法的话,里面的setTimeout方法可以去掉的。因为setInterval方法会不断的去调用startCount函数。
...
??????????????????????????
最佳答案设错了,请不懂的同学看下面的解释哈。
别人都回复了你那么多的东西,你都不把别人的回复设置为正确答案。
说错了。以这个为准。第一秒函数里面计数1,外面函数计数除了本身计数1还调用函数,所以1+1=2。第二秒的时候函数里面的code 自身再次调用 setTimeout(),也就是说函数里面是1+1=2,外面的setInterval()原本是2的,自增量是1,调用函数2,即2+1+2=5。第三秒的时候函数里面的code 自身再次调用 setTimeout()就是2+1=3,外面的setInterval()原本的值加自增量1,再加调用函数就是5+1+3=9。以此类推~~~~反正你只要记住函数外面和里面的code都在不断计算就可以啦。setInterval()递增的量除了1还有startCount()这个函数。
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>计时器</title>
</head>
<script type="text/javascript">
var num=0;
function startCount() {
document.getElementById('count').value=num;
num=num+1;
setTimeout("startCount()",1000);
}
setInterval("startCount()",1000);
</script>
</head>
<body>
<form>
<input type="text" id="count" />
</form>
</body>
</html>
setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式。
setTimeout() 只执行 code 一次。如果要多次调用,请使用 setInterval() 或者让 code 自身再次调用 setTimeout()。setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。
setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。
JavaScript进阶篇
468194 学习 · 21891 问题
相似问题