javascript - 在 HTML 中动态显示 JavaScript 数组

标签 javascript arrays html

我是这方面的初学者。我有一个网页设计作业(使用 Javascript 和 HTML5),要求我使用 do while 循环来提示用户输入月份以及该月份采取的步数。这应该在我的 HTML 中动态填充一个列表,以便网站应该显示两列,其中包含输入的值。例如:

输入的步骤:

月份:步骤:

5月15000
20000年6月
7月25000
...等等...

总步数:60000

我的代码无法运行。
编辑:当前的问题是它似乎陷入了无限循环。 “完成”不会停止提示框,并且网站上不会填充任何内容。
有人能解释一下吗?预先感谢您!

这是我的代码:

<script type = "text/javascript">
			function getSteps()
			{
				var months = new Array(); 
				var steps = new Array();
				var m = 0;
				var s = 0;
				var stepTotal = 0;
								
				do{
					months[m] = prompt("Enter a month or enter 'done' when finished:");
					document.getElementById("mlog").innerHTML = months[m] + "<br>";
					steps[s] = prompt("How many steps did you take?");
					document.getElementById("slog").innerHTML = steps[s] + "<br>";
					steps[s] = parseInt(steps[s]);
					stepTotal += steps[s];
					m++;
					s++;
				}while(months[m] != "done");
				document.getElementById("totalS").innerHTML = "Total Steps: " + stepTotal;
			}			
		</script>
<!DOCTYPE html>
<html lang="en">
	<head>
		<title>Monthly Steps Page</title>
		<meta charset="utf-8">
		
	</head>
	<body>
		<header>
			<h1>Count your steps!</h1>
		</header>
		<section>
			<h2>Click on the buttons below to enter the number of steps taken every month.</h2>
			<button onclick="getSteps();">Steps Log</button><br><br>
				<p>Steps Entered:</p>
				<p>Month<br>
				<span id="mlog">&nbsp;</span></p>
				<p>Steps<br>
				<span id="slog">&nbsp;</span></p>
				<p>Total Steps: <span id="totalS">&nbsp;</span></p>
		</section>
	</body>	
</html>

最佳答案

您在执行m++之后测试months[m],因此应该有months[m-1]. 最好将其移到循环之外。

function getSteps() {
  var months = new Array();
  var steps = new Array();
  var m = 0;
  var s = 0;
  var stepTotal = 0;
  var month = prompt("Enter a month or enter 'done' when finished:");
  while (month && month != 'done') //pressed [cancel], empty or "done"
  {
    months.push(month); //months[m] = month;
    //document.getElementById("mlog").innerHTML += months[m] + "<br>";
    var step /*steps[s]*/ = parseInt(prompt("How many steps did you take?")) || 0; //0 replaces NaN
    //document.getElementById("slog").innerHTML += steps[s] + "<br>";
    document.getElementById("tablelog").innerHTML += "<tr><td>" + month + "</td><td>" + step + "</td></tr>";
    steps.push(step); //steps[s] = parseInt(steps[s]);
    stepTotal += step;
    m++;
    s++;
    month = prompt("Enter a month or enter 'done' when finished:");
  }
  document.getElementById("totalS").innerHTML = stepTotal;
}
table,
td,
tr,
th {
  border: 1px solid black;
  border-collapse: collapse;
}
<!DOCTYPE html>
<html lang="en">

<head>
  <title>Monthly Steps Page</title>
  <meta charset="utf-8">

</head>

<body>
  <header>
    <h1>Count your steps!</h1>
  </header>
  <section>
    <h2>Click on the buttons below to enter the number of steps taken every month.</h2>
    <button onclick="getSteps();">Steps Log</button>
    <br>
    <br>
    <table>
      <tbody id="tablelog">
        <tr>
          <th colspan=2>Steps Entered:</th>
        </tr>
        <tr>
          <th>Month</th>
          <th>Steps</th>
        </tr>
      </tbody>
    </table>
    <p>Total Steps: <span id="totalS">&nbsp;</span>
    </p>
  </section>
</body>

</html>

关于javascript - 在 HTML 中动态显示 JavaScript 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40002713/

相关文章:

javascript - 将回调函数与原型(prototype)函数一起使用

javascript - 使用归档器创建内存中的 .zip,然后将此文件发送到 Node 服务器上的 koa 客户端

java - 排列字符数组

javascript - 根据 JSON 响应中的对象在页面中显示两个不同的按钮

javascript - 如何将外部 Javascript 包含到 html5

javascript - 主干事件 - 禁用捕获阶段

javascript - 背景显示输入字符的进度

java - 在 Java 中解析制表符分隔文本文件时出现错误 ArrayIndexOutOfBoundsException

javascript时间戳插入字符串变量

html - CSS Grid导致水平滚动条