此代码用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
。
答案 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。