Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在while循环中预测单击事件-jquery/javascript_Javascript_Jquery - Fatal编程技术网

在while循环中预测单击事件-jquery/javascript

在while循环中预测单击事件-jquery/javascript,javascript,jquery,Javascript,Jquery,我正在使用javascript/jquery开发一个小骰子游戏应用程序,我遇到麻烦的部分是下面的while循环。我希望用户单击按钮,然后执行while循环的主体。但是,在下面的代码中,while循环的内容执行时不会等待用户每次单击。这是我想要做的事情的正确方法吗 while (dice.value != rollFirst && dice.value != 7) { $("#roll").click(

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

            while (dice.value != rollFirst && dice.value != 7)
            {
                $("#roll").click(function()
                {
                    $("#roll").unbind('click');
                    dice.roll();
                });
更新:根据回答,也许我不完全清楚我想做什么。对于while循环的每次迭代,我希望用户单击roll按钮,然后才希望继续执行while循环的内容。换句话说,我希望while循环等待用户在每次迭代中单击“roll”

就目前而言,程序的逻辑工作正常,但不会等待用户单击滚动按钮。

您的意思是:

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

    while (dice.value != rollFirst && dice.value != 7) {
        dice.roll();
    }
});
你是说:

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

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

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

$("#roll").one(function() {
    dice.roll();
    while (dice.value != rollFirst && dice.value != 7) {}
});
如果要掷骰子直到
while
循环参数变为true,则:

$("#roll").one(function() {
    while (dice.value != rollFirst && dice.value != 7) {
        dice.roll();
    }
});
请注意使用了
.one()
,它只会运行
roll
元素的
click
事件处理程序一次

  • .one()

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

$("#roll").one(function() {
    dice.roll();
    while (dice.value != rollFirst && dice.value != 7) {}
});
如果要掷骰子直到
while
循环参数变为true,则:

$("#roll").one(function() {
    while (dice.value != rollFirst && dice.value != 7) {
        dice.roll();
    }
});
请注意使用了
.one()
,它只会运行
roll
元素的
click
事件处理程序一次

  • .one()

您将单击绑定放在循环中,这是错误的,将导致问题。您需要将逻辑放入单击事件中。比如:

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

您将单击绑定放在循环中,这是错误的,将导致问题。您需要将逻辑放入单击事件中。比如:

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

你想要实现什么还不清楚。将
while
循环放入
click
处理程序似乎是一种合乎逻辑的解决方法,但这取决于您尝试执行的操作。请提供更多上下文。这只是将
单击
事件处理程序绑定到id为
滚动
的元素,直到条件返回
false
,这似乎不是您想要的。如果你陈述了整个问题,那么找出最好的方法可能会更容易。我补充了一些细节。希望这能解释我想做什么。你想要达到什么还不清楚。将
while
循环放入
click
处理程序似乎是一种合乎逻辑的解决方法,但这取决于您尝试执行的操作。请提供更多上下文。这只是将
单击
事件处理程序绑定到id为
滚动
的元素,直到条件返回
false
,这似乎不是您想要的。如果你陈述了整个问题,那么找出最好的方法可能会更容易。我补充了一些细节。希望这能解释我要做的事情。与其自己解除活动的绑定,不如创建一个为您解除绑定的活动。与其自己解除活动的绑定,不如创建一个为您解除绑定的活动。