如何在提示时停止执行下面的javascript代码

时间:2018-05-19 09:30:42

标签: javascript jquery angularjs prompt

这是我的代码:

for (i = 0; i < 2; i++) {

    $("div").append("I Want to Display this before user enter input in Prompt <br>")
    setTimeout(function() {
        input = prompt("test");
        //PUT more code here
    });
    $("div").append("I Want to Display this after user enter input in Prompt")

}

这是小提琴:fiddle

这就是我想要的

  

我希望在用户在提示

中输入输入之前显示此内容      

现在接受输入

     

我想在用户在提示输入输入后显示此内容

     

我希望在用户在提示

中输入输入之前显示此内容      

现在接受输入

     

我想在用户在提示输入输入后显示此内容

我想以这种方式从用户那里获取输入。如果不是通过提示,那么任何其他方式?

3 个答案:

答案 0 :(得分:0)

请参阅更新的代码。

https://jsfiddle.net/sa5ownd8/7/

append功能之后添加了prompt代码。

答案 1 :(得分:0)

您需要将append保留在div内的setTimeout()内,您还可以检查input值是否为null输入。除此之外,使用setInterval()继续在更新的问题中显示提示,以便当用户按cancel时,提示会永久关闭。

&#13;
&#13;
$("div").append("I Want to Display this before user enter input in Prompt <br>")
var promptLoop = setInterval(function(){
  var input = prompt("test");
  if(input !== null && input.trim() !== ''){
    $("div").append("<br/>I Want to Display this after user enter input in Prompt. User input is " + input)
  } else {
    clearInterval(promptLoop);
  }
}, 1000);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div></div>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

你的代码的问题是setTimout函数是异步的,这意味着它内部的代码块不会立即执行,而是被放入event queue,等待所有代码执行相同作用域中的其余代码,然后才执行。

如果您只想在setTimeout延迟过后才执行某些代码,那么您需要将所有代码放在setTimeout内。

&#13;
&#13;
$("div").append("I Want to Display this before user enter input in Prompt <br>")
setTimeout(function() {
    const input = prompt("test");
    //PUT more code here

    $("div").append("I Want to Display this after user enter input in Prompt")
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div></div>
&#13;
&#13;
&#13;