2016-05-15 146 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

僅供參考,我的輸出出來是這樣的: 我們的答案: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; 

內while循環,到了最後它看起來就像這樣:

<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()