我正在尝试将 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/