我编写了一段代码,可以生成 12 个字符的随机代码。我正在使用 Math.random 和 for 循环来执行此操作。在页面上您可以输入您想要的代码数量。
我想要做的是将生成的代码保存在一个数组中,但是我不能这样做,因为 for 循环和 Math.random 按数字创建代码并将它们放在一起。如何将整个 12 位代码添加到我的数组中(以便稍后使用)?
我尝试过 array.push 但没有成功。有效的方法是将数字输出到 HTML 中的 DOM 对象,如下所示:
for (i = 0; i < 12; i++) {
var mathRandom = Math.floor(Math.random() * 9);
var result = document.querySelector("#result");
result.innerHTML += mathRandom;
}
但这并没有将 12 位代码放入变量中。我也尝试过这个:
var codeNumber = "";
codeNumber += mathRandom;
但最终变量值只有 1 位数字。
<input type="number" id="numberOfCodes">
<button onclick="codeGen()">Generate</button>
<div id="result"></div>
<script>
var numberOfCodes = document.querySelector("#numberOfCodes");
var arr = [];
function codeGen() {
x = numberOfCodes.value;
for (a = 0; a < x; a++) {
generate();
console.log("Generated code");
}
}
function generate() {
for (i = 0; i < 12; i++) {
var mathRandom = Math.floor(Math.random() * 9);
var result = document.querySelector("#result");
result.innerHTML += mathRandom;
}
}
</script>
</div>
</body>
</html>
我希望将创建的代码(经过一些更改后)添加到数组中,以便我稍后可以使用页面上的代码。每个单独的 12 位代码都需要在数组中拥有自己的位置。
最佳答案
这应该有效:
var result = [], stringResult;
for (i = 0; i < 12; i++) {
var mathRandom = Math.floor(Math.random() * 9);
result.push(mathRandom);
}
stringResult = result.join(''); // concatenates all the elements
console.log(stringResult);
您的代码的问题在于 +
符号尝试确定操作数的类型并选择正确的运算、串联或加法。当向 innerHtml
添加内容时,它将数字视为字符串。这就是它起作用的原因。
关于javascript - 如何使用 for 循环向 JS 变量添加值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54113817/