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

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

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

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


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);


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

var timeoutid=setTimeout("alert('32ew')",1000);
setTimeout(function(){clearTimeout(timeoutid)},3000);
【热门文章】
【热门文章】