2016-05-15 21 views
-3

Ich bin mit While-Schleifen für eine Aufgabe üben und versuchen, Math.random zu verwenden, um eine Schleife mit 10 Iterationen zu generieren, so bekomme ich jedes Mal eine Zufallszahl. Stattdessen bekomme ich immer die gleiche Nummer 10 Mal hintereinander. Nicht sicher, was ich hier falsch mache? Verwenden Sie im HTML, um alle Ergebnisse gleichzeitig anzuzeigen.Zufallszahl 10 Mal generieren

<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, kommt meine Ausgabe wie folgt aus: Unsere Antwort: 1. 654 Unsere Antwort: 2. 654 Unsere Antwort: 3. 654 Unsere Antwort: 4. 654 Unsere Antwort: 5 . 654 Unsere Antwort: 6. 654 Unsere Antwort: 7. 654 Unsere Antwort: 8. 654 Unsere Antwort: 9. 654 Unsere Antwort: 10. 654 –

+3

müssen Sie die Zufallszahl * innerhalb * berechnen, die Schleife. –

+0

@RobinD. Es ist normalerweise besser, die Frage selbst mit zusätzlichen Informationen zu aktualisieren, anstatt sie in einen Kommentar zu schreiben. –

Antwort

0

einfach die Berechnung der Zufallszahl in die Schleife bewegen:

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

Die Zufallszahl nur einmal erzeugt wird, wenn die Funktion aufgerufen wird, aber Sie müssen Nummer 10 mal erzeugen , so dass Sie

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

innerhalb while-Schleife am Ende gesetzt wird wie folgt aussehen:

<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. Sie sind nur eine Zufallszahl zu erzeugen. Erzeugen Sie ein zufälliges innerhalb der Schleife!
  2. Innerhalb der Schleife sind Sie ständig einen DOM-Parser Aufruf für Ihr Element nachzuschlagen, statt Ihre Variable loopOutput für
  3. Verkettung HTML-String verwenden
  4. Ihre Variablen im Rahmen Ihrer Funktion Ort:

statt:

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

bewegt der Zufall calcula innerhalb der Schleife, aber nicht die Initialisierung der Variablen.

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