我已經寫了一個函數window.setinterval,後面跟兩個條件。完全按照我想要的方式在Firefox,Opera,IE中工作。在webkit引擎中,這個功能並沒有被推廣。window.setinterval函數在不同的瀏覽器引擎中表現不同
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);
我設置的時間間隔,其中均達到max.speeds時,停止功能應該被調用,如果速度爲0,應顯示的結果。在Mozilla,IE,Opera的工作完全按照我的意圖。但是在webkit中,第一個條件本身沒有被執行。無限循環正在運行。
我試過嵌套,如果也,即使然後第一條件如果條件不被執行。請幫我解決這個問題。
如果這不是一個正確的評價,我可以在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);
};
速度是否浮點?如果是,速度如何變爲0? –
有什麼錯誤?你不顯示a,b,c是什麼,所以我們不能真正幫忙。 – kennypu
@ t.niese不,它不是浮點數。 – Abhishek