预期while循环中的click事件 - jquery / javascript

时间:2012-01-09 21:34:34

标签: javascript jquery

我正在使用javascript / jquery开发一个小骰子游戏应用程序,我遇到麻烦的部分在下面的循环中。我希望用户单击该按钮,然后执行while循环的主体。但是,使用以下代码,while循环的内容将在不等待用户每次单击的情况下执行。这是接近我正在做的事情的正确方法吗?

            while (dice.value != rollFirst && dice.value != 7)
            {
                $("#roll").click(function()
                {
                    $("#roll").unbind('click');
                    dice.roll();
                });

更新:根据回复,也许我并不完全清楚自己要做什么。对于while循环的每次迭代,我想让用户单击roll按钮,然后我才想继续执行while循环的内容。换句话说,我希望while循环等到用户为每次迭代点击“roll”。

就像现在一样,程序的逻辑有效,但它不会等待用户点击滚动按钮。

3 个答案:

答案 0 :(得分:3)

如果您希望while循环在click事件处理程序中运行,则代码必须位于该事件处理程序中:

$("#roll").one(function() {
    dice.roll();
    while (dice.value != rollFirst && dice.value != 7) {}
});

如果你想掷骰子直到while循环参数变为真,那么:

$("#roll").one(function() {
    while (dice.value != rollFirst && dice.value != 7) {
        dice.roll();
    }
});

请注意.one()的使用,它只会为click元素运行一次#roll事件处理程序。

答案 1 :(得分:0)

你的意思是:

$("#roll").click(function() {
    $("#roll").unbind("click");

    while (dice.value != rollFirst && dice.value != 7) {
        dice.roll();
    }
});

答案 2 :(得分:0)

你将你的点击绑定放在你的循环中,这是错误的并且会引起问题。您需要将您的逻辑放在Click事件中。类似的东西:

$("#roll").click(function()
{
     while (dice.value != rollFirst && dice.value != 7)
     {
         $("#roll").unbind('click');
         dice.roll();
         break;
     }
});