2011-10-01 98 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

好吧然后,我会的。 –