2014-12-05 2 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

+0

우리에게 약간의 HTML을 보여 줌 – for3st

+0

요청 당 Html이 추가됨 – Los

답변

1
  1. 단어 길이에 문법적 오류가 있습니다. 두 경우 모두 길이가 lenth가 아니어야합니다.
  2. return v.values ​​- 값을 제거하십시오.
  3. 원하는 경우 정렬하는 것입니다. 그러면 javascript의 sort 함수 만 사용할 수 있습니다. 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

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)); 
    } 
} 

그래서 여기 내가 return v.values을 사용하는 대신 인덱스 array.Use return v에 모든 값을 밀어. length이 아닌 lenth도 사용하십시오.

+0

이것도 효과가있어 사용자 입력이 간소화되었습니다. – Los

관련 문제