2014-12-05 70 views
0

問候我是第一個月的java腳本學生,並有創建工作陣列的問題。我試圖從用戶獲得輸入使用parsefloat將其從一個字符串更改爲一個整數,傳遞它通過函數來​​找到中間值或中間值的平均值,但它繼續作爲NaN出現,嘗試各種不同的方法來檢查值,但它仍然拒絕接受它們作爲整數,這是現在的代碼。再次感謝你。NaN與用戶輸入陣列

<!DOCTYPE html> 
<html> 
    <head> 
    <meta charset="utf-8"> 
    <title> middle index </title> 
     <script> 
     function middleIndex() { 

      var index = []; 
      index = [ 
        parseFloat(document.getElementById('input1').value), 
        parseFloat(document.getElementById('input2').value), 
        parseFloat(document.getElementById('input3').value), 
        parseFloat(document.getElementById('input4').value), 
        parseFloat(document.getElementById('input5').value) 
      ]; 

      var midindex = getMiddle(index); 
      document.getElementById('output').value = midindex; 
     }; 

     function getMiddle(list) { 
      var s = list.map(function(v) { 
       return v.values;}).sort(function(a, b) {return a - b}); 

      var middle = Math.floor((s.lenth - 1)/2); 
      if (s.lenth % 2) { 
       return s[middle]; 
      } else { 
       return (s[middle] + s[middle +1])/2.0; 
      } 
     }; 
</script> 
    </head> 
    <body> 
    <h2>Finding the middle value</h2> 
    <br> 
    <input type="text" id="input1"> 
    <br> 
    <input type="text" id="input2"> 
    <br> 
    <input type="text" id="input3"> 
    <br> 

    <input type="text" id="input4"> 
    <br> 
    <input type="text" id="input5"> 
    <br> 
    <button onclick="middleIndex()">Middle</button> 
    <br> 
    <input type="text" id="output"> 
    </body> 
</html> 
+0

「使用parsefloat將其從一個字符串的整數改變」。如果你想要一個整數,你不應該使用parseInt嗎? – jurgemaister 2014-12-05 11:16:22

+0

告訴我們一些html – for3st 2014-12-05 11:17:33

+0

每個請求添加html添加 – Los 2014-12-05 11:45:32

回答

1
  1. 你在詞長上有語法上的錯誤,在兩種情況下它都不應該是長短的,而是長度。
  2. return v.values - 刪除值
  3. 如果您只想排序,那麼您只能使用JavaScript的排序功能var s = list.sort();

所有的代碼完成:

function getMiddle(list) {    
    var s = list.sort(); 
    var middle = Math.floor((s.length - 1)/2); 

    if (s.length % 2 == 0) { 
     return s[middle]; 
    } else { 
     return (s[middle] + s[middle + 1])/2.0; 
    } 
} 
+0

這個工作,要傾斜的課程謝謝你。 – Los 2014-12-05 21:20:33

1

請驗證這個答案。我認爲這可能會有所幫助。

function middleIndex() { 
    var index = []; 
    var inputTags = document.getElementsByTagName('INPUT'); 
    for(var i=1;i<inputTags.length+1;i++) { 
     var x = 'input' + i; 
     index.push(parseFloat(document.getElementById(x).value)); 
    } 
} 

所以在這裏我推所有的值成指數array.Use return v而不是使用return v.values的。 並且還使用length而不是lenth

+0

這也起作用了,它簡化了用戶輸入,謝謝。 – Los 2014-12-05 21:21:27