【问题标题】:JS - How to start from new line inside for loop?JS - 如何从 for 循环内的新行开始?
【发布时间】:2015-10-26 16:39:55
【问题描述】:

单击按钮后,我尝试打印 6 个随机数。然后每次我再次单击按钮时,随机数应该从新行开始,但我不知道如何。我尝试了一切,但没有任何效果。感谢您的帮助。

        function fname() {
            for(i=1; i<=6; i++) {
                    number = number + Math.floor(Math.random() * 47 + 1) + "-";
                    var print = number + " GOOD LUCK!";
            }
            document.getElementById("total").value = print;
        }
<!DOCTYPE html>
<html>
    <head>
        <title>Let's ROLL!</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <style>
            input, button {display: block;}
        </style>
        <script>
        var number = "";
        function fname() {
            for(i=1; i<=6; i++) {
                    number = number + Math.floor(Math.random() * 47 + 1) + "-";
                    var print = number + " GOOD LUCK!";
            }
            document.getElementById("total").value = print;
        }
        </script>
    </head>
    <body>
        <div>
            <button onclick="fname()">ROLL!</button>
            <textarea id="total" rows="12" cols="50" readonly></textarea>
        </div>
    </body>
</html>

【问题讨论】:

  • 这不只是范围问题吗? print 正在 for 循环中初始化,然后在外部访问。
  • @MTCoster,是的,我犯了一个错误,因为我几乎所有的代码都在 for 循环中。谢谢:)

标签: javascript for-loop newline


【解决方案1】:

不是 100% 清楚您想要换行符的位置,但在文本区域中,换行符是 \n。如果这是在 HTML 元素中,您将使用 &lt;br /&gt;

var number = "";

function fname() {
  for (i = 1; i <= 6; i++) {
    number = number + Math.floor(Math.random() * 47 + 1) + "-";
  }
  number = number + "\n";
  
  var print = number + "GOOD LUCK!";
  document.getElementById("total").value = print;
}
 input,
 button {
   display: block;
 }
<div>
  <button onclick="fname()">ROLL!</button>
  <textarea id="total" rows="12" cols="50" readonly></textarea>
</div>

【讨论】:

  • 谢谢!我自己尝试了类似的代码,但是我在循环中拥有了所有内容:) 现在我看到了我的错误,再次感谢!
【解决方案2】:

添加“\n”。

我假设您想连接文本区域中的新文本,因此您应该使用 += 而不是 =:

document.getElementById("total").value += print + "\n";

【讨论】:

  • 这将在整个值之前加上一个换行符。你最好把它放在后面;)
  • 确实如此 - 它会在其他所有内容之前添加不必要的行。我会编辑它。
【解决方案3】:

您可以通过适当的分隔符将数组和.join() 数字和行一起使用。这只会在元素之间插入字符。字符串中的\n 呈现新行。

var button = document.getElementById('roll');
var total = document.getElementById('total');

var rolls = [];

button.onclick = function() {
    var roll = [];
    for(var i=0; i<6; ++i) roll.push(Math.floor(Math.random() * 47 + 1));
    rolls.push(roll.join('-'));
    total.value = rolls.join('\n') + "\nGOOD LUCK!";
}
<button id="roll">ROLL!</button><br>
<textarea id="total" rows="12" cols="50" readonly></textarea>

【讨论】:

  • 这很有趣,我一定会尝试的。我不能给你代表,因为我自己的代表很低。谢谢你的回答!
猜你喜欢
  • 2019-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-18
  • 2013-06-22
  • 2021-12-18
  • 1970-01-01
相关资源
最近更新 更多