Почему мое случайное число в коде Javascript объединяется, а не добавляется?

#javascript #html

#javascript #HTML

Вопрос:

Я пишу базовый генератор случайных чисел (самообучающийся в freeCodeCamp, собираюсь использовать его для игр с моими двумя маленькими мальчиками). Я использую базовый HTML без добавления CSS в качестве DOM и Javascript на стороне клиента для функции (на стороне клиента, поскольку моему старшему 5 лет, и у нас есть семейный блог, который он любит показывать людям).

Проблема в том, что приведенный ниже код работает до определенной степени — функция Math random работает нормально, она хорошо работает с Math.floor, а умножение * (максимум — минимум 1) работает так, как ожидалось.

Проблема в том, что последний сегмент не работает: минимум. Из результатов, которые я просмотрел, формула генерирует результат с точностью до скобки умножения включительно, но затем конкатенирует минимум в конце, а не добавляет его к результату.

Я преобразовал максимальное и минимальное значения в целые числа через parseInt, когда впервые обнаружил проблему, на случай, если там была проблема (я не понял почему, поскольку они оба отлично работали в скобке умножения), но это, конечно, не имело никакого значения.

  function randomNumberFunction(maximum, minimum) {
  var numRan;
  var maximum = document.getElementById("maximum").value;
  var minimum = document.getElementById("minimum").value;
  parseInt(maximum);
  parseInt(minimum);
    
  numRan = Math.floor(Math.random() * (maximum - minimum   1))   minimum;
  alert(numRan);
}  
 <div id="dice">
  <form name="randomDice">
    <h1>Get a random number</h1>
    <p>Maximum</p>
    <input id="maximum" type="number" name="random"><br>
    <p>Minimum</p>
    <input id="minimum" type="number" name="random"><br>
    <br>
    <button onclick="randomNumberFunction()">Get a random number</button>
  </form>

</div>  

Я хочу иметь возможность фиксировать минимальные и максимальные значения, введенные пользователем, и создавать случайное целое число из этого диапазона. Вместо этого я получаю значения типа 01 при вводе min 1, max 4 или 21. или 63 при вводе min 3, max 10.

Комментарии:

1. назначьте синтаксический анализ самой переменной: minimun = parseInt(minimun) . Сделайте то же самое для maximum

2. Я не знаю, почему это не сработало для меня раньше — идеально. Спасибо, что помогли новичку!

Ответ №1:

Вы не присваиваете значение при приведении минимальных и максимальных переменных

Попробуйте это:

 function randomNumberFunction(maximum, minimum) {
  var numRan;
  var maximum = document.getElementById("maximum").value;
  var minimum = document.getElementById("minimum").value;
  maximum = parseInt(maximum);
  minimum = parseInt(minimum);

  numRan = Math.floor(Math.random() * (maximum - minimum   1))   minimum;
  alert(numRan);
}