简体   繁体   English

我收到了NaN错误

[英]I'm getting a NaN error

I'm getting a NaN error in this calculator script: Any ideas? 我在这个计算器脚本中遇到NaN错误:有什么想法吗?

Here is the whole html in a text format: 这是整个文本格式的html:

https://www.dropbox.com/s/i3u429bn5bjd4i9/orecalculator.txt https://www.dropbox.com/s/i3u429bn5bjd4i9/orecalculator.txt

<script language="JavaScript">

var IDs = [22,17425,17426,1223,17428,17429,1225,17432,17433,1232,17436,17437,1229,17865,17866,21,17440,17441,1231,17444,17445,1226,17448,17449,20,17452,17453,11396,17869,17870,1227,17867,17868,18,17455,17456,1224,17459,17460,1228,17463,17464,19,17466,17467,1230,17470,17471];

function calculate(i){
    while (i + 1 < IDs.length) {
        var y=document.getElementById('reward');
        var x=document.getElementById(IDs[i]);
        y.value=parseInt(y.value)+parseInt(x.value);
        i++;
    }
}
</script>

I have Run this code in console and found following output 我在控制台中运行此代码并找到以下输出

document.getElementById('reward')
//output <input type=​"text" id=​"reward">​
document.getElementById('reward').value
//""
parseInt(document.getElementById('reward').value)
//NaN
parseInt("")
//NaN

Explanation 说明

parseInt of empty string is NaN 空字符串的parseInt是NaN

Solution

Use 采用

Reward: <input type="text" id="reward" value="0">

instead 代替

Reward: <input type="text" id="reward">

Fixed: JS Code 修正:JS代码

function calculate(i){
    while (i + 1 < IDs.length) {
        var y=document.getElementById('reward');
        var x=document.getElementById(IDs[i]);
        y.value=parseInt(y.value|0)+parseInt(x.value|0);
        i++;
    }
}

untested but should be something like this: 未经测试但应该是这样的:

calculate = function (i){

    var y = document.getElementById('reward');
    var x = 0;  
    while (i + 1 < IDs.length) {

        var elm = document.getElementById(IDs[i]);
        x+=parseInt(elm.value||0);
        i++;
    }
    y.value = x;
};

working fiddle: 工作小提琴:

http://jsfiddle.net/g30rg3/8ADQX/ http://jsfiddle.net/g30rg3/8ADQX/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM