for循环打印我在div中不正确

function generer() {

  var antall = Number(document.getElementById('antall').value);
  var drikke = document.getElementById('drikke').value;

  for (let i = antall; i >= 0; i--) {
    vers = i + ' bottles of ' + drikke + ' on the wall <br>' + i + ' bottles of ' + drikke + '<br> If one of those bottles should happen to fall <br><br>';
    console.log(vers);

  }
  document.getElementById('output').innerHTML = vers.repeat(antall);
}
<html>

<head>
  <link rel="stylesheet" type="text/css" href="style.css">
  <meta charset="utf-8">
  <title>100-bottles</title>
  <script src="script.js"></script>
</head>

<body>
  <input type="text" id="antall" placeholder="Antall vers"><br>
  <input type="text" id="drikke" placeholder="Type drikke"><br>
  <button id="knapp" onclick="generer()">Generer vers</button>
  <div id="output">
    <p>Vers kommer her:</p>
  </div>
</body>

</html>

所以这个想法是打印出一些诗句和一杯饮料,然后重复该诗句 x(输入)次。我的代码这样做,但是,我不知道为什么它在控制台中正确输出,但输入的数字总是在我输出的 div 中显示为 0。我尝试制作一个 while 循环(在这方面不是很熟练) 还是无济于事。另外,如果有帮助,请说明为什么我错了/它不起作用。

雷托尔

您会在控制台中看到预期结果,因为您vers为 for 循环的每次迭代显示当你在for循环迭代,值i正在下降,而新的价值vers,与i它,被记录下来。每个控制台日志显示的当前值vers随着i减少。

当您最终写入 DOM 时,您已经完成了所有的 for 循环迭代。此时,的值vers已经结算为上次的值,并以“0瓶”开头。

然后您的代码创建一个新字符串,其中vers以“0 瓶”开头的 值重复多次。您将这个大字符串呈现给 DOM。所以你会看到“0 瓶”一遍又一遍地重复。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章