我正在使用javascript / jquery开发一个小骰子游戏应用程序,我遇到麻烦的部分在下面的循环中。我希望用户单击该按钮,然后执行while循环的主体。但是,使用以下代码,while循环的内容将在不等待用户每次单击的情况下执行。这是接近我正在做的事情的正确方法吗?
while (dice.value != rollFirst && dice.value != 7)
{
$("#roll").click(function()
{
$("#roll").unbind('click');
dice.roll();
});
更新:根据回复,也许我并不完全清楚自己要做什么。对于while循环的每次迭代,我想让用户单击roll按钮,然后我才想继续执行while循环的内容。换句话说,我希望while循环等到用户为每次迭代点击“roll”。
就像现在一样,程序的逻辑有效,但它不会等待用户点击滚动按钮。
答案 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
事件处理程序。
.one()
:http://api.jquery.com/one 答案 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;
}
});