2016-12-30 28 views
0

該函數將根據步長值顯示起始數字和結束數字之間的所有偶數。 例如,如果我輸入1,20和3. 我應該有4,10和16作爲偶數。使用按鈕顯示數組內的所有值

我需要將evenNum數組內的所有數字推入#result span。
目前它似乎只顯示數組內的最後偶數。

此外,如果我想以垂直線顯示所有偶數,我該怎麼做?

https://codepen.io/anon/pen/wgwaey

<body> 
    <div class="container"> 
     <h1>Sample</h1> 
    </div> 
    <div class="container"> 

     <label>Starting Number: </label> 
     <input id="startingNum" type="text"> 
     <br> 
     <label>Ending Number: </label> 
     <input id="endingNum" type="text"> 
     <br> 
     <label>Step: </label> 
     <input id="step" type="text"> 
     <br> 
     <button onclick="playButton()" id="play">Display Evens</button> 

    </div> 
    <div class="container"> 
     <p>Here are the even numbers between <span id="startNum"></span> and <span id="endNum"></span> by <span id="stepNum"></span>'s:</p> 
     <span id="result"></span> 
    </div> 
</body> 

JS:

<script> 
     function playButton(){ 
      run(); 
     } 
     function run(){ 
      var x = parseInt(document.getElementById("startingNum").value); 
      var y = parseInt(document.getElementById("endingNum").value); 
      var z = parseInt(document.getElementById("step").value); 
      document.getElementById("startNum").innerHTML = x; 
      document.getElementById("endNum").innerHTML = y; 
      document.getElementById("stepNum").innerHTML = z; 
      var evenNum = []; 
      while (x < y){  
       if (x%2 == 0){ 
        evenNum.push(x); 
       } 
       x += z; 
       for (var i = 0; i<evenNum.length; i++){ 
        document.getElementById("result").innerHTML = evenNum[i]; 
       } 
      } 
     }   
</script> 
+0

您可以動態創建一個表格,其中包含您需要的多行(本例中每個單元格包含一個單元格)並將這些值放入這些單元格中。這將創建一個簡單的垂直呈現。搜索「使用JavaScript創建表格」並會彈出一些示例。有些人可能會告訴你「不要使用表」,我會忽視它作爲勢利(查看這個頁面的來源,它使用表)。它們被廣泛使用,在任何地方都很穩定,包括移動設備,易於使用CSS操作,braindead簡單,適合初學者學習。 –

+0

請注意,如果用戶爲該步驟輸入0或負數,應用程序將具有無限的while循環。你應該仔細檢查並提示用戶輸入一個從1到n的正數 – mhodges

+0

另一件需要記住的事情是,對一個空字符串執行'parseInt()'將返回NaN。如果你用'Math.round(Number([你的字符串值])'替換'parseInt')'你不會得到NaN,你的數字仍然是整數。 – mhodges

回答

3

的問題是在這裏:

for (var i = 0; i<evenNum.length; i++){ 
    document.getElementById("result").innerHTML = evenNum[i]; 
} 

您需要移動這出while循環並將其更改爲

document.getElementById("result").innerHTML += ' ' + evenNum[i]; 
              //^add to existing 

,或者更簡單,刪除for循環,把這個放在while循環後面:

document.getElementById("result").innerHTML = evenNum.join(' '); 
2

上面的錯誤是,你不斷正在重置結果的內部HTML,所以即使NUM的最後一個元素是顯示的唯一一個。此外,您不需要更新while循環內的結果,您可以在完成查找後執行此操作。試試看!

function playButton(){ 
    run(); 
} 
function run(){ 
    var x = parseInt(document.getElementById("startingNum").value); 
    var y = parseInt(document.getElementById("endingNum").value); 
    var z = parseInt(document.getElementById("step").value); 
    document.getElementById("startNum").innerHTML = x; 
    document.getElementById("endNum").innerHTML = y; 
    document.getElementById("stepNum").innerHTML = z; 
    var evenNum = []; 
    while (x < y){  
     if (x%2 == 0){ 
      evenNum.push(x); 
     }   
     x += z; 
    } 
    for (var i = 0; i<evenNum.length; i++){ 
     document.getElementById("result").innerHTML += "<p>" + evenNum[i] + "</p>"; 
    } 
} 
相關問題