JQuery setInterval() 方法 重复调用时 会出现问题 越来越快 清除也没用

JQuery setInterval() 方法 重复调用时 会出现问题 越来越快 清除也没用
2024-12-03 06:37:02
推荐回答(5个)
回答1:

问题:当一个页面同时有两个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()方法设置的定时器。

回答2:

一般出现这种情况都是因为重复注册了 setInterval,比如在某个事件的相应函数中创建setInterval,再次触发该事件的时候又注册了 setInterval。

建议在 setInterval 代码的前面先清除一次。

回答3:

  setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。
  重复调用是因为重复注册了setInterval,比如在某个事件的相应函数中创建setInterval,再次触发该事件的时候又注册了 setInterval。

回答4:

本质上来说还是属于函数节流相关的问题.出现这种情况多半是重复注册了setInterval(),然后清除时只清除了一个,比如:

var ms = setInterval(function(){},3000);

$('body').hover(function(){

clearInterval(ms);

},function(){

var ms= setInterval(function(){}, 3000);

})

解决方法:

  1. 将ms定义为全局变量,不适用var去定义,那么不管函数触发多少次注册,值始终都是一个,那么清除的时候自然就会清除掉对应的setInterval().

  2. 通过函数节流的方式为注册setInterval()时加上一个开关来控制一段时间内只执行一次注册.

回答5:

你的代码要贴出来。 清除不会没有用,只是你自己用的不对。