任何人都可以解决为什么这不起作用。产生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);
}
答案 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);
}