![](/img/trans.png)
[英]Optimization , window.setInterval or .change function on range
[英]window.setinterval function behaving differently in different browser engines
我写了一个函数window.setinterval
后接两个if条件。 完全按照我在Firefox,Opera,IE中的要求工作。 在Webkit引擎中,该功能未保留。
x = window.setInterval(function() {
if(a.speed >= a.maxSpeed && b.speed >= b.maxSpeed && c.speed >= c.maxSpeed) {
a.stop();
b.stop();
c.stop();
}
if(a.speed === 0 && b.speed === 0 && c.speed === 0 && completed === 3) {
window.clearInterval(x);
enableControl();
printResult();
enableControl();
}
}, 100);
我设置了一个间隔,当达到最大速度时,应调用停止功能,如果速度为0,则应显示结果。 在IE的Mozilla中,Opera的运行完全符合我的要求。 但是在webkit中,第一个if条件本身并未执行。 无限循环正在运行。
我也尝试过嵌套(如果也),即使条件未执行,也是如此。 请帮助我解决此问题。
如果这不是正确的方法,我可以在c.stop()
之后触发超时并手动将a,b,c的速度设为0,然后启用控制并显示结果吗?
您要求的停止功能:
Slot.prototype.stop = function() {
var _this = this,
limit = 30;
clearInterval(_this.si);
_this.si = window.setInterval(function() {
if(_this.speed > limit) {
_this.speed -= _this.step;
$(_this.el).spSpeed(_this.speed);
}
if(_this.speed <= limit) {
_this.finalPos(_this.el);
$(_this.el).spSpeed(0);
$(_this.el).spStop();
clearInterval(_this.si);
$(_this.el).removeClass('motion');
_this.speed = 0;
}
}, 100);
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.