javascript自动控制图片切换速度为什么会越来越快
发布网友
发布时间:2022-04-20 17:10
我来回答
共4个回答
热心网友
时间:2022-04-20 18:40
首先,从代码来看你对js还不是特别了解
其次要说说你这3段代码的逻辑了,每个函数都包含对另一个函数的调用,但是是通过setInterval调用的,相当于在2秒后,调用指定函数(比如function a中的b),但是问题在于他们可是不互斥的,当你用a调用了b后,你想着目前流程走到了b,下一步应该准备掉c了,可是令你想不到的是此时function a并没有停止,他仍然会2秒后,调用b,function b在首次调用c的同时也没有停止,仍然会在2秒后再次调用c
更严重的问题:我不是开发前端的,但是据了解js的代码类似堆栈调用,你每次调用我想可能都会造成压栈操作,每个function中都引用了另一个操作,不知道时间久了会不会造成内存溢出,那么最终的效果就不是线性增长(比如每次最多调用3方法),而是1、2、4、8成指数的上涨
测试方法:你可以在function a、b、c中各加一个输出,输出到某一个div中,就明白了
热心网友
时间:2022-04-20 19:58
这是把浏览器搞崩溃的节奏吗。。指数级雪崩。
去掉b,c,改成只用这个
function a(){
var img = document.getElementById('image');
setInterval(fucntion(){
img.src= img.src=="1.png" ?
"2.png" : img.src=="2.png" ?
"3.png" : "1.png";
},2000)
}
热心网友
时间:2022-04-20 21:32
因为在第二次走定时器的时候,你没有把上一次的定时器清除clearInterval()
热心网友
时间:2022-04-20 23:24
以前遇到过这种问题,请考虑以下:
定时器是否没有及时删除;
定时器是否有增加的地方;
重点检查鼠标进入和移出时候代码,看看是否此处增加了定时器;
检查定时器间隔的值是否逐渐缩小。