javascript - 带循环的放置方法不起作用

标签 javascript arrays

我正在尝试将 counter 的值插入到名为 numpy 的数组中。不幸的是,什么也没发生。我的错误在哪里?这是我在下面尝试的内容。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Example-1</title>

</head>

<body>
    <p id="demo"></p>
        <script>
        function validateForm() {

            var months=(principal+principal*interestrate*0.01)/monthlypayment;
            var numpay = new Array(months);
            for(var i=0;i<=months-1;i++)
                {
                numpay.push(i);
                text += numpay[i] + "<br>";

            }
                document.getElementById("demo").innerHTML = text;

    }
    </script>


</body>

</html>

最佳答案

解决现有问题

正如其他人指出的那样,这样的事情应该有效:

var months = 12;
var numpay = []; // just as easy
var text = "";

for (var i = 1; i <= months; i++) {
  numpay.push(i);
  text += numpay[i - 1] + "<br/>";
}

document.getElementById('demo').innerHTML = text;
<p id="demo">(empty)</p>

提高你的技能

虽然您将它们组合在 for 循环中,但您在这里做了两件单独的事情:填写月份,并创建要添加到 DOM 的文本。

一段代码只做一件事,有很多话要说。您可以编写一个可重用的 range 函数,它使用更现代的 JS 技术来为您提供两个值之间的数字整数范围。所以

const range = (lo, hi) => [...new Array(hi - lo + 1)].map((_, i) => i + lo);

使用它,您可以通过调用以下函数来创建您的 months 变量:

const months = range(1, 12);

然后,有了这个数组,你就可以使用 Array.prototype.join将值组合到您想要的文本中:

const text = months.join('<br/>')

这会产生更好的代码:

const range = (lo, hi) => [...new Array(hi - lo + 1)].map((_, i) => i + lo);

const months = range(1, 12);

document.getElementById('demo').innerHTML = months.join('<br/>');
<p id="demo">(empty)</p>

如果您需要该 text 变量来进行其他操作,只需将其分配为连接结果,然后将 innerHTML 分配给它即可。

显然,range 函数是不必要的。您可以直接编写 const Months = [...new Array(12)].map((_, i) => i + 1);。但根据此类抽象进行思考通常可以让您编写出更清晰的代码。

关于javascript - 带循环的放置方法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49390437/

相关文章:

javascript - 无法停止 slider

javascript - (GObjectIntrospection) 尝试使用 javascript 创建 ibus 引擎时出现段错误

Java 与 C# : BigInteger hex string yields different result?

arrays - 给定一个正整数和负整数数组,重新排列它,使一端有正整数,另一端有负整数

python - 如何从 Python 向量的特定索引列表中选择组件?

c++ - 字符数组快速转换为ASCII键值的方法

javascript - socket.io 身份验证在第一次连接时不起作用

javascript - 单击省略号时展开和缩小

javascript - 我可以使一个对象与另一个对象具有相同的顺序吗?

java - 查找数组中总和等于给定数字的所有数字对?