2011-10-01 101 views
1

我正在進行使用while循環的簡單測試。始終進行while循環測試

下面是代碼:

var ishovered = 0; 

$('a.hovertest').hover(function(){ 
    ishovered = 1; 
},function(){ 
    ishovered = 0; 
}); 

while(ishovered == 1) 
    { 
     //execute function 
    } 

如何讓這個while循環測試所有的時間和功能,當他徘徊執行? (是的,我知道我可以把功能放在懸停部分,我想問這個是有原因的)

雖然它不一定是一個循環,但我只需要一個函數來儘快執行ishovered變成1.是否有任何方法來監控?

這裏是例子:http://jsfiddle.net/9s3zE/

回答

2

小提琴:http://jsfiddle.net/9s3zE/1/

使用setInterval用於這一目的。順便說一下,您正在描述「輪詢者」的行爲。輪詢器檢查條件是否評估爲真。如果爲true,則激活一項功能。如果爲false,則會出現默認行爲(可能爲空)。在這種情況下使用while循環並不明智,因爲當條件成立時,瀏覽器將凍結。

var ishovered = 0; 
$('a.hovertest').hover(function(){ 
    ishovered = 1; 
},function(){ 
    ishovered = 0; 
}); 

var showresult = $('#showresult'); 
window.setInterval(function(){ 
    if(ishovered == 1){ 
     showresult.text("You hovered"); 
    } 
    else if(showresult.text() == "You hovered"){ 
     showresult.text("Default text (not hovered)"); 
    } 
}, 100); 
+0

這幾乎是我想要的,但不完全。我不希望它在我希望它不斷測試的時間間隔內進行測試,因此一旦發現變化,我可以執行此功能。 (我喜歡if語句,這就是我想要的,我只是需要它不斷測試,而不是間隔)我想它應該由某種事件觸發,所以它不必減慢瀏覽器的速度每秒測試100次左右。 –

+0

一個小的間隔(如果100ms不夠小,將其降低到50),一旦變量發生變化,幾乎立即執行該功能。去試試吧。小提琴:http://jsfiddle.net/9s3zE/1/ –

+0

好吧然後,我會的。 –