2014-09-27 118 views
0

我試圖在JavaScript中將數組打印到textarea。我目前的代碼只打印第一個元素,而不是全部四個,我不知道爲什麼。我曾嘗試使用常規for循環,但這沒有什麼區別。在JavaScript中打印數組到文本區域

<!DOCTYPE html> 
<html> 
    <head> 
     <script type="text/javascript"> 
     var listArray = function() 
     { 
      var people = ["Ben", "Joel", "Mary", "Tina"]; 
      var scores = [88, 98, 100, 78]; 

      for (var key in people) 
      { 
       var obj = people[key]; 
       var num = scores[key]; 

       var string = obj + ", " + num + "\n"; 

       document.getElementById("box").innerHTML = string; 
      } 
     } 

     window.onload = function() 
     { 
      document.getElementById("show_score").onclick = showHighScore; 
      document.getElementById("list_array").onclick = listArray; 
     } 
     </script> 
    </head> 
    <body> 
     <form id="high_score" name="high_score" action="highScore.html" method="get"> 
      <label>Results</label> 
      <br> 
      <textarea cols="50" rows="4" id="box"></textarea> 
      <br> 
      <input type="button" value="List Array" id="list_array" onclick="listArray"> 
      <br> 
      <input type="button" value="Show Best Score" id="show_score" onclick="showHighScore"> 
     </form> 
    </body> 
</html> 
+0

你只需要追加'.innerHTML = ...'就會覆蓋。 '.innerHTML + = ...'附加。另請注意'showHighScore'沒有定義。 – 2014-09-27 01:43:37

回答

2

這是因爲這條線

document.getElementById("box").innerHTML = string; 

所以你說的話,請更換的textboxstring的內容的內容。所以最後它只有最後一個元素的值。

使用這個代替

document.getElementById("box").innerHTML += string; 

因此,這將追加前一後的下一個記錄。

還有一個問題,在第23行它sasys showHighScore沒有定義。