我编写了一段代码,生成了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位代码都需要在数组中拥有自己的位置。
答案 0 :(得分:1)
这应该有效:
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
时,它将数字视为字符串。这就是它起作用的原因。
答案 1 :(得分:0)
您将需要进行重构,以便将生成单个代码的代码封装在单个函数中(此处为generate()
),然后使用该函数的输出,如下所示。 (我希望这些评论能启发人。)
var numberOfCodes = document.querySelector("#numberOfCodes");
var resultDiv = document.querySelector("#result");
function codeGen() {
var nToGenerate = parseInt(numberOfCodes.value);
for (var a = 0; a < nToGenerate; a++) {
var code = generate(); // generate a code
// you could put the code in an array here!
// for the time being, let's just put it in a new <div>
var el = document.createElement("div");
el.innerHTML = code;
resultDiv.appendChild(el);
}
}
function generate() {
var code = ""; // define a local variable to hold the code
for (i = 0; i < 12; i++) { // loop 12 times...
code += Math.floor(Math.random() * 9); // append the digit...
}
return code; // and return the value of the local variable
}
<input type="number" id="numberOfCodes" value=8>
<button onclick="codeGen()">Generate</button>
<div id="result"></div>
答案 2 :(得分:0)
如answer所示,这应该对您有用:
function makeRandCode() {
var code = "";
var ints = "1234567890";
for (var i = 0; i < 12; i++) {
code += ints.charAt(Math.floor(Math.random() * ints.length));
}
return code;
}
console.log(makeRandCode());
答案 3 :(得分:0)
问题在于您要添加数字,而您真正想要的是将它们连接起来,解决方案是将这些数字转换为String,然后将其保存在要存储它们的变量中。一个例子:
2 + 2 = 4
和'2'+'2'='22'
只需使用.toString()
,然后将其保存到变量中即可。