gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 02:15:21 27 4
gpt4 key购买 nike

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

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com