clearTimeout 方法在IE上的兼容问题

今天在做项目时。发现同事写的代码中的存在一个bug问题,出错代码如下:

clearTimeout();
setTimeout(function(){
   // 具体业务逻辑
}, 1000);

这段代码在chrome、firefox浏览器中不会报错,但在IE上会报“调用对象无效”或着报“clearTimeout对象无效”这个错误信息,经过查询发现clearTimeout这个方法必须要传一个参数,具体应修改为:

var timer = null;

clearTimeout(timer);
timer = setTimeout(function(){
   // 具体业务逻辑
}, 1000);

但是经过这样修改后,浏览器控制台还是报同样的错误,经常尝试发现,clearTimeout() 方法需要传入一个 setTimeout() 方法返回的id,当没有返回值时,clearTimeout() 方法在IE下执行还是会报错,最后修改结果如下:

var timer = null;
if(null != timer){
    clearTimeout(timer);
}
timer = setTimeout(function(){
   // 具体业务逻辑
}, 1000);

当修改成这样时,IE就不会在出现问题了。

猜你喜欢

转载自blog.csdn.net/dreaming317/article/details/108383861