用逗号将字符串拆分成数字然后打印最终跳过1 y值

时间:2015-05-16 01:11:14

标签: javascript html arrays input output

此代码用x和y作为输入,用逗号分隔字符串,将它们转换为整数,然后打印出字符串。

<body>
    x: <input id="xv"> <br/>
    y: <input id="yv">
    <br/>
    <div id="results">
    <button onclick="action()">Go</button>
    </div>

    <script>

        // javascript
        var action = function(){

            // separate by commas and place into array
            var xvs = document.getElementById("xv").value.split(",");
            var yvs = document.getElementById("yv").value.split(",");

            // convert to an integer
            for(var i=0, j=xvs.length; i<j; i++){
                xvs[i] = parseInt(xvs[i]);
                yvs[i] = parseInt(yvs[i]);
            }

            // print out results
            document.getElementById("results").innerHTML = xvs + "<br/>" + yvs;
        }

    </script>
</body>

您希望它打印出相同的输入副本。但是,相反,我得到了这个结果:

Input:
62,64,64,65,65,65,65,66,66,66,66,66,66,66,67,67,67,68,69,69 
62,63,63,64,66,65,64,67,67,63,64,68,65,66,66,65,68,68.69,70 

Output:
62,64,64,65,65,65,65,66,66,66,66,66,66,66,67,67,67,68,69,69
62,63,63,64,66,65,64,67,67,63,64,68,65,66,66,65,68,68,70,NaN

有谁知道这里发生了什么?

这是一个jsfiddle链接:https://jsfiddle.net/zs65x2e3/

请注意,如果不将其放入单独的<script>代码中,则代码无效,因为action()被视为undefined

2 个答案:

答案 0 :(得分:2)

输入中有错误

旧:

@title[0].upcase!

修正:

62,64,64,65,65,65,65,66,66,66,66,66,66,66,67,67,67,68,69,69 
62,63,63,64,66,65,64,67,67,63,64,68,65,66,66,65,68,68.69,70 

你有一段时间而不是逗号。

答案 1 :(得分:2)

错误不是因为这个时期。循环有一个问题。 您正在x输入的长度上运行循环。如果y输入的输入小于x输入,那么对于y的剩余迭代,您将获得NaN。 在您的样本输入中,周期导致输入的长度小于1,因此您最后得到1 NaN。