记录一下JS中用setTimeout做定时事件,而用clearTimeout无法清除定时的问题排查思路。
<script>
var clear_info;
var qingkong_time=10000 ;
function abc(){
alert("九品源码的网址是:www.19jp.com");
clear_info=setTimeout("error_tishi('')", qingkong_time); //清空信息
console.log('定时器ID:'+clear_info)//对象的ID
}
$(document).keydown(function (event) {
if (clear_info){//判断如果有定义再执行
clearTimeout(clear_info);
console.log('清理的定时器ID:'+clear_info)
}
}
</script>
在排查问题时,根据console.log打印定时器的ID,发现自己的代码中出现了多个定时器,因为每次产生的对象是不同的ID,所以多个定时器如果用一个事件清除定时的话会造成未清除指定的时间,所以会有无效的情况,尽量定义一个变量名,自己再判断一下清除的定时与自己设置的是不是一个ID就可以判断出问题所在。