如何修复不同于 console.log 的输入值?

How to fix input value different from console.log?

当使用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);

正如@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);

在 for 循环中,您必须将每个生成的值保存在不同的变量中,您的代码现在在每次迭代中更改 (id_unique) 的值,然后打印最后生成的值。