Накапливать результаты
Простое, но грубое решение - добавить текущий текст с помощью <br>
для разрывов строк:
const p = document.getElementById("ok");
p.innerHTML = p.innerHTML + (p.innerHTML === "" ? "" : "<br>") + arr.join(", ");
Но этот подход, как известно, будет плохо работать по мере роста текста больше.
Если вы измените элементы p на:
<div id="ok" class="text-container">
И замените document.getElementById("ok").innerHTML = arr;
скрипта на:
const p = document.createElement("p");
p.textContent = arr.join(", ");
document.getElementById("ok").appendChild(p);
И добавите css:
.text-container {
margin-top: 1em;
}
.text-container > p {
margin: 0;
}
Тогда у вас должно быть что-то работающее.
Также есть несколько вещей для решения:
Math.random ()
Функция Math.random()
не принимает аргументы, поэтому ваша переменная x
не имеет никакого эффекта. Если предполагается, что x и y являются минимальным и максимальным значением, попробуйте это из Math.random () - JavaScript | MDN :
function getRandomInt(min, max) {
var min = Math.ceil(min);
var max = Math.floor(max);
return Math.floor(Math.random() * (max - min)) + min;
}
min
включительно и max
эксклюзивно. Если x = 0
и y = 10
, и вы хотите, чтобы диапазон был [0-10], вы можете сделать getRandomInt(x, y + 1)
. Убедитесь, что min
не больше max
.
Предотвратить бесконечность l oop
Ваш l oop застрянет, если количество возможных уникальных целых чисел меньше, чем количество элементов массива, необходимых для его завершения.
Больше семантики пользовательского ввода
Переменные x
и y
проверяются перед записью чисел, , но после они уже были использованы для генерации чисел. Другими словами, процесс создания номера следует перенести в блок else
.