【问题标题】:Make the while loop test all the time一直做while循环测试
【发布时间】:2011-11-28 23:07:50
【问题描述】:

我正在做一个使用 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/

【问题讨论】:

    标签: jquery html loops while-loop


    【解决方案1】:

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

    为此目的使用setInterval。顺便说一句,您正在描述“轮询者”的行为。轮询器检查条件的计算结果是否为真。如果为真,则激活一个功能。如果为 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);
    

    【讨论】:

    • 这几乎是我想要的,但不完全是。我不希望它在间隔内进行测试,我希望它不断地进行测试,以便一旦发生更改,我就可以执行该功能。 (我确实喜欢 if 语句,这就是我想要的,我只需要它不断测试,而不是间隔测试)我想它应该由某种 en 事件触发,因此它不必减慢浏览器的速度每秒测试 100 次左右。
    • 一个小间隔(如果 100ms 不够小,则将其降低到 50),几乎在变量更改后立即执行该函数。去试试吧。小提琴:jsfiddle.net/9s3zE/1
    猜你喜欢
    • 1970-01-01
    • 2011-01-22
    • 2019-03-08
    • 1970-01-01
    • 2017-10-31
    • 1970-01-01
    • 2016-06-08
    • 1970-01-01
    • 2013-04-07
    相关资源
    最近更新 更多