使用console.log
时,它将生成 3 个不同的值(这是我想要的),但是当将变量传递给input val
时,它只会生成一个。
我需要使函数生成的3(三)个代码不仅出现在console.log
中,而且还会出现在输入值中……
function uniqueID() {
function chr4() {
return (Math.random().toString(16).slice(-4)).toUpperCase();
}
return chr4() + chr4() + '-' + chr4() + '-' + chr4() + '-' + chr4() + '-' + chr4() + chr4() + chr4();
}
for (i = 1; i <= 3; i++) {
var id_unique = uniqueID();
console.log(id_unique);
}
$("#input_test").val(id_unique);
答案 0 :(得分:0)
因此,如@demo所述,您登录到循环内部。这就是为什么您看到所有3个值的原因。因此,每个循环上的id_unique
被重新分配,因此最终循环上的val()
仅等于最后一个值。底部提供的解决方案将当前值压入一个数组,然后您可以在function uniqueID() {
function chr4() {
return Math.random()
.toString(16)
.slice(-4)
.toUpperCase();
}
return (
chr4() +
chr4() +
'-' +
chr4() +
'-' +
chr4() +
'-' +
chr4() +
'-' +
chr4() +
chr4() +
chr4()
);
}
var ids = [];
for (i = 1; i <= 3; i++) {
var id_unique = uniqueID();
ids.push(id_unique);
}
console.log(ids);
$('#input_test').val(ids);
中使用该数组。
尝试一下,看看它能否成功
Student
答案 1 :(得分:0)
在for循环中,您必须将每个生成的值保存在不同的变量中,您的代码现在在每次迭代中更改(id_unique)的值,然后打印最后生成的值。