Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.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
循环中的Javascript提示替换_Javascript_Jquery_Prompt - Fatal编程技术网

循环中的Javascript提示替换

循环中的Javascript提示替换,javascript,jquery,prompt,Javascript,Jquery,Prompt,因此,我可以使用一个和一个按钮来处理按钮单击时输入的值,而不是提示,例如: 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); 但是,在循环中,例如: var x = []; $('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);
但是,在循环中,例如:

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);
vary=0;
var z=[];
做{
z、 推送(提示(“输入值”);
y++;
}

而(y你没有。你完全改变了你的逻辑,完全失去了循环:

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
    }
});

您已经编辑了问题,并在下面评论说,您下一步的操作可能会因输入的不同而有所不同。这不是问题,您只需将事件响应模型应用于新需求。例如,您说

…比方说,我想创建一个游戏,其中循环将以“向上”和“向下”输入向上移动

然后:

有几种不同的方法可以处理分派,不一定是
开关
。例如:

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
的长度,看看我们收集了多少输入).

不要使用循环。在用户添加一个项目后,只需检查
x
的长度,然后决定是否要请求另一个添加,或者停止询问。只是一个想法,当您有5个条目时,您可能希望禁用输入/按钮。在这种情况下,您只需在每次按下按钮时检查条目数。类似于s:$('buttonid').on('click',function(){if(i>=5){$('buttonid').prop('disabled','disabled');});随着更新,问题变得太广泛了。谢谢你的回答。如果我只想请求5个输入并将其放入一个数组中,那就行了。不过,假设我想创建一个游戏,其中我的操作取决于下一个输入-在这种情况下,我需要一个循环,我想学习如何用文本字段代替提示。@CaptainObvious:它适用于你在问题中所展示的内容,是的。这也是你如何处理你所描述的内容。关键是你接受与用户交互的异步、基于状态的本质。你不需要循环,你可以使用上面的事件响应模型使你的动作完全依赖于下一个输入。@Capta毫无疑问:TJ回答了你的问题。正如编写程序时遇到的所有问题一样,你需要运用基本的问题解决技能,并利用你所获得的知识来解决问题。没有一种技术可以涵盖你将来可能遇到的每种情况。你只能处理手头的问题,这就是TJ Crowder所做的在这个答案中。您面临的更基本的问题是不理解循环结构的作用。它们立即执行代码,除了停止循环的条件外,不考虑任何其他因素。我想我明白了。我手头需要的东西不需要循环。但最后一个问题:有没有办法获得输入/b循环中的提示按钮?@captain显然:如果你的意思是“在我收集输入时停止此语句和下一语句之间的代码”,则不存在。
提示
警报
,以及
确认
都是可怕的特例。