繁体   English   中英

循环中的Javascript提示替代

[英]Javascript prompt alternative in Loop

因此,我可以使用<input type="text">和一个button来完成按钮点击时输入值的操作,而不是提示,例如:

var x = [];

$('button').on('click', function(){
  x.push($(input[type="text"]).val());  
});

但是,在循环中例如:

var y=0;
var z=[];
do {
  z.push(prompt('input value'));
  y++;
}
while (y<5);

循环将提示输入值,用户输入值,提示将值分配给数组,然后循环将再次提示,直到y达到5。

而不是提示,我想用我的文本字段输入和按钮执行此操作。 如何让循环暂停,等待用户输入文本,并在每次到达循环的那一部分时通过单击按钮提交?

编辑:将5个值推入数组只是一个例子。 假设我想要创建一个游戏,其中循环将向上移动,向上移动,向下移动向下移动。 我希望能够在循环期间请求用户输入,类似于提示的操作方式,但不使用提示。

你没有。 你彻底改变了你的逻辑,完全失去了循环:

var z = [];
$('button').on('click', function() {
    z.push($(input[type="text"]).val());
    if (z.length === 5) {
        // Do what you would have done after the end of the loop here
    }
});

您已编辑了该问题,并在下面评论说您接下来要做的事情可能因输入而异。 这不是问题,您只需将事件响应模型应用于您的新要求。 例如,你说

...假设我想创建一个游戏,其中循环将向上移动,向上移动,向下移动向下移动。

然后:

$('button').on('click', function() {
    switch ($(input[type="text"]).val().toLowerCase()) {
        case "up":
            // Do the "up" thing
            break;
        case "down":
            // Do the "down" thing
            break;
    }
});

您可以通过几种不同的方式处理调度,而不一定是switch 例如:

var actions = {
    up: function() {
        // Do the "up" thing
    },
    down: function() {
        // Do the "down" thing
    }
};
$('button').on('click', function() {
    var action = actions[$(input[type="text"]).val().toLowerCase();
    if (action) {
        action();
    }
});

等等。 关键是,而不是反复的工作(我这样做,我得到的输入,接下来我要做的事情,我得到更多的输入),你是被动的工作:我得到的输入,我做了什么。 这可能需要某种状态管理(记住你所处的位置)超出上面所示(第一个例子有状态管理:我们检查z的长度以查看我们收集了多少输入)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM