关于setTimeout()和clearTimeout()方法的使用?

<script>
var timeoutid=setTimeout("alert('32ew')",1000);
setTimeout(clearTimeout(timeoutid),3000);
</script>

alert是在1秒后调用,而clearTimeout是在3秒后才调用,为什么alert不起作用了,也就是为什么超时调用为什么会被取消了啊?

阅读 4.1k
3 个回答

setTimeout()接受的第一个参数应该是一个函数;你这里clearTimeout(timeoutid)这条语句会被立即执行,所以第一行的定时器瞬间就被取消。把语句转换成匿名函数就好了:

var timeoutid=setTimeout("alert('32ew')",1000);
setTimeout(function(){clearTimeout(timeoutid)},3000);

to 楼主:
问题是因为setTimeout的传参方式有问题,你的第二个setTimeout中传的参数有问题,不能加括号,当页面解析到你的参数时,看到括号直接执行函数了

setTimeout(foo(),2000)  // 正常应该这么写 =》 setTimeout(foo,2000)

如果你需要在执行时给函数传参,比如timeoutid,可以这么写

setTimeout(clearTimeout,3000,timeoutid);

把参数放到3000的后面,这样执行时,就自动把参数传给执行函数了

var timeoutid=setTimeout("alert('32ew')",1000);
setTimeout(clearTimeoutId,500);
function clearTimeoutId() {

clearTimeout(timeoutid);

}

var timeoutid=setTimeout("alert('32ew')",1000);
setTimeout("clearTimeout(timeoutid)",500);

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题