问题:当一个页面同时有两个setInterval函数调用的冲突如何解决?
解决方法:
1.定义两个变量 并把 setInterval 赋值给变量
var a = setInterval(function(){ ------ code ------},1000)
var b = setInterval(function(){ ------ code ------},1000)
2.清除
clearInterval(a)
clearInterval(b)
--------------------------------------------------------------------------
举例:
注:
setInterval()方法会不停地调用函数,直到用clearInterval()终止定时或窗口被关闭。
window.clearInterval()
功能:取消由setInterval()方法设置的定时器。
一般出现这种情况都是因为重复注册了 setInterval,比如在某个事件的相应函数中创建setInterval,再次触发该事件的时候又注册了 setInterval。
建议在 setInterval 代码的前面先清除一次。
setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。
重复调用是因为重复注册了setInterval,比如在某个事件的相应函数中创建setInterval,再次触发该事件的时候又注册了 setInterval。
本质上来说还是属于函数节流相关的问题.出现这种情况多半是重复注册了setInterval(),然后清除时只清除了一个,比如:
var ms = setInterval(function(){},3000);
$('body').hover(function(){
clearInterval(ms);
},function(){
var ms= setInterval(function(){}, 3000);
})
解决方法:
将ms定义为全局变量,不适用var去定义,那么不管函数触发多少次注册,值始终都是一个,那么清除的时候自然就会清除掉对应的setInterval().
通过函数节流的方式为注册setInterval()时加上一个开关来控制一段时间内只执行一次注册.
你的代码要贴出来。 清除不会没有用,只是你自己用的不对。