【问题标题】:Wait for click in loop等待点击循环
【发布时间】:2014-05-20 08:25:04
【问题描述】:

甚至在开始之前,我就知道已经有一个thread 关于这个,但不幸的是它根本没有帮助我。

所以这是我的问题,我有一个用 JavaScript 编写的循环,最后是一个按钮单击事件。该事件与位于弹出窗口内的按钮有关。

for(var i=0; i<value; i++){
  [...]
  //some code here
  [...]
  //opens the window
  windowButton.addEventListener('click', function(){
    //code
  });
  //here I would like for it to continue once the click has been triggered
}

不幸的是,它不等待点击。

就像在类似帖子中所说,在函数内部增加变量 i 不起作用,甚至使用全局变量。建议的答案不是我想要的。

[编辑] 好的,所以我将添加一些更准确的信息。我需要创建一个表格。但它还需要能够解析包含所有信息的文件,并能够填充它。对于文件的每一行信息,所以每次表单填满时,都需要打开一个窗口,等待位于其中的验证按钮。

我希望我说得够清楚。 [/编辑]

提前感谢您的任何回复

【问题讨论】:

标签: javascript loops events click


【解决方案1】:

在 JavaScript 中无法暂停函数。你需要彻底改变你的方法。

将您当前运行的代码每次绕过循环移动到一个单独的函数中。

在该函数之外创建一个变量。

每次调用函数时,增加该变量。

如果变量“太大”,则在执行任何操作之前从函数返回。

将该函数指定为您的点击事件处理程序。

【讨论】:

  • 非常感谢,我去试试
  • 所以我试过了,但我不确定我将如何实现你的回答,如果我理解你所说的递归?我已经尝试过了,但在我的情况下是不可能的,因为递归会召回整个堆栈,再次感谢
  • 是的,您需要为此使用递归。我不知道“召回整个堆栈”是什么意思,也不知道为什么它会阻止你做你在问题中描述的事情。
  • 好吧,当使用递归时,如果我没记错的话,每次调用函数时都会将它添加到堆栈/堆中。当函数完成调用自身时,堆栈中包含的所有函数都会被调用。我已经测试过,该函数在被调用一次时会被调用。如果我错了,请告诉我,再次感谢
  • 你错了。使用正常递归,函数将一直运行到它再次调用自身为止。当该函数返回时,前一个函数将从它停止的点继续运行。在这种情况下,函数并没有真正调用自己,它设置了一个事件处理程序,当事件触发时将调用该函数。但无论哪种情况,都不会双向调用该函数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-03
  • 1970-01-01
  • 2017-08-17
  • 2021-07-14
  • 2020-04-01
  • 1970-01-01
  • 2023-01-20
相关资源
最近更新 更多