给予NAN或0的Javascript简单计算

时间:2010-12-04 17:08:22

标签: javascript

任何人都可以解决为什么这不起作用。产生NAN并且如果为数字重置(var输入上的文档产生0.该脚本应该添加无限数量的字段,以ID为product_total_price_PRI_ ...开头。

显然我错过了一些东西,并且试图看到它时头疼。

function getFields() {
    var inputs = document.getElementsByTagName('input');
    var result = 0;
    for( var i = 0; i < inputs.length; i++ ) {
        if( inputs[i].id.indexOf('product_total_price_PRI_') == 0 );
           result += parseFloat(inputs[i].value); 
     }

    alert(result);
}

3 个答案:

答案 0 :(得分:3)

您的if()语法已关闭,语句结束;,因此您的result += 始终正在运行,应该是:

function getFields() {
    var inputs = document.getElementsByTagName('input');
    var result = 0;
    for( var i = 0; i < inputs.length; i++ ) {
        if( inputs[i].id.indexOf('product_total_price_PRI_') == 0 ) //no ; here
           result += parseFloat(inputs[i].value); 
     }

    alert(result);
}

答案 1 :(得分:0)

您需要删除;之后的if

if( inputs[i].id.indexOf('product_total_price_PRI_') == 0 )
    result += parseFloat(inputs[i].value); 

另外,最好检查输入中输入的字符串是否为数字:

if( inputs[i].id.indexOf('product_total_price_PRI_') == 0 )
{
    var temp = parseFloat(inputs[i].value);
    if (!isNaN(temp)) {
        result += temp; 
    }
}

答案 2 :(得分:0)

空白字段的评估结果为NaN,而不是0。您需要确保不添加NaN

function getFields() {
    var inputs = document.getElementsByTagName('input');
    var result = 0;
    for (var i = 0; i < inputs.length; i++ ) {
        if (inputs[i].id.indexOf('product_total_price_PRI_') == 0) {
            var val = parseFloat(inputs[i].value);
            if (val - 0 == val) // will be false if val is NaN
                result += val; 
        }
    }

    alert(result);
}