【问题标题】:My Javascript prompt runs before function even if prompt is located after the function即使提示位于函数之后,我的 Javascript 提示也会在函数之前运行
【发布时间】:2016-08-29 17:10:31
【问题描述】:

我写了一个小练习程序,它显示了一个提示数字的时间表。

我希望在询问用户哪个数字后显示表格。如果用户输入的数字不是 -1,我想要求另一个数字。

我正在寻找的顺序是提示用户,显示表格,提示用户显示表格......不幸的是,我的程序工作的顺序是提示用户,提示用户,提示用户。 .. 就在显示每个输入的表格之后。

显然代码不是这样写的。

		// get number to show time table for
		var aNumber = prompt("Enter the number for time table or -1 to stop the program", ""); 
		
		while(aNumber != -1) {
			timeTableFrom(aNumber); // show time table for the first number
			aNumber = prompt("Enter the number for time table or -1 to stop the program", ""); // ask for another number. HERE IS THE PROBLEM - THIS LINE RUNS BEFORE THE PREVIOUS ONE!
			
		}
		
		document.write("stopped");
		
				
		
		function timeTableFrom(number)
		{
			for (var i = 0; i <= 10; i++)
			{
				document.write(number + " * " + i + " = " + number*i + "<br />");
			}
			
		}

【问题讨论】:

  • while 循环阻塞了浏览器唯一的线程,在 JS 执行结束之前没有时间渲染结果。你必须使用timer 来实现你想要的。 (并用适当的 DOM 操作函数替换 document.write。)
  • 欢迎来到 Stack Overflow!您可以通过格式化代码来帮助我们帮助您,这样我们就不会滚动它。
  • @zhon 感谢您的热烈欢迎。下次我会更好地格式化它。你们也会提供解决方案吗?

标签: javascript function events prompt


【解决方案1】:

// get number to show time table for
var aNumber = null;
var div = document.getElementById("textDiv");

setTimeout(enterNumber, 0);

function enterNumber()
{
  aNumber = prompt("Enter the number for time table or -1 to stop the program", ""); 

  if (aNumber != -1) {
    timeTableFrom(aNumber); // show time table for the first number
    setTimeout(enterNumber, 0);
  }
  else
    div.innerHTML += "stopped"
}

function timeTableFrom(number)
{
  for (var i = 0; i <= 10; i++)
  {
    div.innerHTML += number + " * " + i + " = " + number*i + "<br />";
  }
}
<div id="textDiv">
</div>

@Teemu 是正确的。我承认,这有点草率,但这应该可行。尽量避免使用 document.write,因为它可能会产生不可预知的结果。而是尝试其他methods of output

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-24
    • 1970-01-01
    • 2018-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多