Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.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 forEach循环跳过模式打开_Javascript - Fatal编程技术网

Javascript forEach循环跳过模式打开

Javascript forEach循环跳过模式打开,javascript,Javascript,我有一个包含n个单词的数组。我正在运行一个forEach循环来遍历每个元素,对于每个元素,它应该打开一个带有文本输入的模式,单击一个按钮后,值存储在一个新数组中,模式消失。那么同样的事情也会发生n次 我用prompt测试了它,效果很好。我正在控制台中记录循环中的值,似乎正在发生的事情是数组中的每个字都被记录下来,然后模态仅为最后一个实例打开。不知道为什么 以下是每个循环的详细信息: words.forEach(function(word) { console.log(word);

我有一个包含n个单词的数组。我正在运行一个forEach循环来遍历每个元素,对于每个元素,它应该打开一个带有文本输入的模式,单击一个按钮后,值存储在一个新数组中,模式消失。那么同样的事情也会发生n次

我用prompt测试了它,效果很好。我正在控制台中记录循环中的值,似乎正在发生的事情是数组中的每个字都被记录下来,然后模态仅为最后一个实例打开。不知道为什么

以下是每个循环的详细信息:

words.forEach(function(word) {

      console.log(word);

      $('.modal-title').html("Edit value for "+word);
      $('#wordModal').modal('show');

      $('#submit').click(function() {

        let input = $('#elm2').val();

        newBody = body.replaceAll("["+word+"]", input);
        body = newBody;

        $('#wordModal').modal('hide');
      })
    });
当模式出现时,标题显示“为(数组中的最后一个元素)输入值”

我的目标是:

对于数组中的每个元素,我希望屏幕上出现一个弹出窗口来更改它的值。加载下一个元素的另一个弹出窗口,依此类推。到目前为止,prompt工作正常,但看起来不太好

以下是模式的代码:

<div class="modal fade" id="wordModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
    <div class="modal-dialog">
      <div class="modal-content">
        <div class="modal-header">
          <h4 class="modal-title">Edit Value</h4>
          <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
        </div>
        <div class="modal-body">

          <div class="form-group">
            <label>Comment</label>
            <textarea type="text" class="form-control" name="comment" id="elm2" placeholder=""></textarea>
          </div>
        </div>

        <div class="modal-footer">
          <button type="button" id="submit" class="btn btn-primary">Add</button>
          <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
        </div>
      </div>
    </div>
  </div>

编辑值
&时代;
评论
添加
接近

除了这可能不是最好的UX之外,使用modals实现这一点的方法是使用
async
/
wait
:

函数showmodel(word){
返回新承诺(解决=>{
$('.modal title').html(“编辑“+word”的值);
$('#wordModal').modal('show').on('hidden.bs.modal',function(){
让输入=$('#elm2').val();
解析(输入);
});
});
}
异步函数promptalwords(words){

对于(var i=0;代码的行为与它应该的完全一样。您正在循环并使同一个模型可见,以便它为每个单词更新一个模型,因此您只看到最后一个单词。您需要显示等待输入的模式,然后在捕获第一个单词后显示第二个单词的模式。模式与javascript提示符或警报。提示和警报会在用户单击按钮之前停止javascript的执行。模式只是html。它不会停止javascript。如果你想要相同的行为,你必须采取不同的方法。像函数而不是循环。但是为什么你希望它一个接一个地运行?我的意思是代码不会等待单击
单击
method只会附加带有回调函数的侦听器。然后处理下一个对象。你应该让它更像是在回调中更改项时的链表。我不知道modals没有停止javascript。有人有其他替代方法的示例吗?没有更多上下文。注释没有足够的空间给你u任何示例。除非答案回答了您的问题,否则无法使用答案。随机示例不是您问题的答案。您必须编辑您的问题,添加您试图执行的操作的解释(我指的是脚本为用户所做的操作,而不是问题本身)并添加相关的HTML代码,这样我们就可以给你一个实际解决问题的答案。谢谢,我应该把它放在for each中吗?不,你需要完全摆脱这些,按照我在
promptAllWords
方法中的例子,使用一个标准的
for
循环。谢谢!我意识到这不是最常用的方法是的,但它可以让我暂时通过。我试图让函数promptAllWords返回一个变量。但它返回一个承诺?我如何从中获得变量?@CíanMacTiarná在哪个变量中,你希望它返回?