Как исправить входное значение, отличное от console.log? - PullRequest
0 голосов
/ 22 апреля 2019

При использовании 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);

Ответы [ 2 ]

0 голосов
/ 22 апреля 2019

В цикле for вы должны сохранять каждое сгенерированное значение в другой переменной, теперь ваш код меняет значение (id_unique) на каждой итерации, а затем печатает последнее сгенерированное значение.

0 голосов
/ 22 апреля 2019

Так как @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);
...