2016-05-15 2 views
-3

Я тренируюсь с циклами while для назначения и пытаюсь использовать Math.random для генерации цикла с 10 итерациями, поэтому каждый раз получаю случайное число. Вместо этого я продолжаю получать одинаковое число, указанное 10 раз подряд. Не знаете, что я здесь делаю неправильно? Использование в HTML для одновременного отображения всех результатов.генерация случайного числа 10 раз

<script type="text/javascript"> 
    var x = 0; 
    function showResults() { 
    var randomNum = Math.floor(Math.random() * 999) + 1; 
    loopOutput = ""; 
     while (x < 10) { 
     x++; 
     document.getElementById("loopResults").innerHTML += "<p>Our answer: " + x + ". " + randomNum + "</p>"; 
    }} //end function showResults() 
</script> 
+0

FYI, мой выход выходит так: Наш ответ: 1. 654 Наш ответ: 2. 654 Наш ответ: 3. 654 Наш ответ: 4. 654 Наш ответ: 5 . 654 Наш ответ: 6. 654 Наш ответ: 7. 654 Наш ответ: 8. 654 Наш ответ: 9. 654 Наш ответ: 10. 654 –

+3

Вам нужно будет рассчитать случайное число * внутри * петля. –

+0

@ RobinD. Обычно лучше обновить сам вопрос дополнительной информацией, а не помещать ее в комментарий. –

ответ

0

Просто переместите расчет случайного числа в цикле:

var x = 0; 
function showResults() { 
loopOutput = ""; 
    while (x < 10) { 
    var randomNum = Math.floor(Math.random() * 999) + 1; 
    document.getElementById("loopResults").innerHTML += "<p>Our answer: " + x + ". " + randomNum + "</p>"; 
    x++; 
}} //end function showResults() 
0
<script type="text/javascript"> 
    var x = 0; 
    function showResults() { 
    loopOutput = ""; 
     while (x < 10) { 
     var randomNum = Math.floor(Math.random() * 999) + 1; 
     x++; 
     document.getElementById("loopResults").innerHTML += "<p>Our answer: " + x + ". " + randomNum + "</p>"; 
    }} //end function showResults() 
</script> 
0

Случайное число генерируется только один раз, когда функция вызывается, но вам необходимо сгенерировать номер 10 раз , так что вы положили

var randomNum = Math.floor(Math.random() * 999) + 1; 

внутри во время цикла, в конце концов, это будет выглядеть следующим образом:

<script type="text/javascript"> 
var x = 0; 
function showResults() { 
loopOutput = ""; 
    while (x < 10) { 
    var randomNum = Math.floor(Math.random() * 999) + 1; 
    x++; 
    document.getElementById("loopResults").innerHTML += "<p>Our answer: " + x + ". " + randomNum + "</p>"; 
}} //end function showResults() 

0
  1. Вы генерируя только один случайное число. Создайте случайный цикл внутри цикла!
  2. Внутри цикла вы постоянно вызов DOM парсер для поиска вашего элемента, вместо того, чтобы использовать переменную loopOutput для HTML конкатенации
  3. Поместите переменные в пределах вашей функции:

Вместо:

function showResults() { 
 

 
    var x = 0, 
 
     loopOutput = ""; 
 

 
    while (x < 10) { 
 
    x++; 
 
    var randomNum = Math.floor(Math.random() * 999) + 1; 
 
    loopOutput += "<p>Our answer: " + x + ". " + randomNum + "</p>"; 
 
    } 
 

 
    // Append HTML only once! 
 
    document.getElementById("loopResults").innerHTML = loopOutput; 
 

 
} 
 

 
showResults();
<div id="loopResults"></div>

0

случайное движение calcula внутри цикла, но не инициализация переменных.

var x = 0; 
    function showResults() { 
    var randomNum; 
    loopOutput = ""; 
     while (x < 10) { 
     randomNum = Math.floor(Math.random() * 999) + 1; 
     document.getElementById("loopResults").innerHTML += "<p>Our answer: " + x + ". " + randomNum + "</p>"; 
     x++; 
    }} //end function showResults() 
Смежные вопросы