带有用户输入的阵列上的NaN

时间:2014-12-05 11:10:39

标签: javascript arrays nan

问候我是第一个月的java脚本学生,并且在创建工作数组时遇到问题。我试图从用户那里获得输入,使用parsefloat将其从字符串更改为整数,通过函数传递它以找到中间值或中间值的平均值,但它一直以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>

2 个答案:

答案 0 :(得分: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而不是return v.values。 并且还使用length而不是lenth

答案 1 :(得分:1)

  1. 你在单词长度上有语法错误,在两种情况下都不应该是长度而是长度。
  2. return v.values - 删除值
  3. 如果你想要的只是排序,那么你只能使用javascript var s = list.sort()的排序函数;
  4. 所有代码完成:

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