如何让这个数组方程工作?

时间:2013-06-07 17:41:04

标签: javascript nan

我编写了一些Javacript代码,用于计算用户输入的多个值的直线素材。这是Javascript代码......

var totalLinealFootage = 0;
for (var i = 0; i <= 24; ++i) 
{
    var p = +document.getElementById('pf' + i).value;
    var f = +document.getElementById('ff' + i).value;
    var i = (+document.getElementById('if' + i).value)/12;

    if (!isNaN(p) && !isNaN(f) && !isNaN(i)) 
    {
        totalLinealFootage += (f+i)*p;
    }
}

截至目前,无论我在输入中放置什么值,totalLinealFootage都没有值?

2 个答案:

答案 0 :(得分:3)

我假设你重用i会使你的循环绊倒。在循环结束时,当for处理i时,它可能会完全更改值。

如果var i = (+document.getElementById('if' + i).value)/12;i设置为大于24的某个值,则由于i <= 24条件,循环将在下一次迭代开始时终止。

相反,请为循环索引和计算中的值使用不同的变量名。

答案 1 :(得分:0)

标记:

<input id="pf0" value="1" />
<input id="ff0" value="2" />
<input id="if0" value="3" />

JavaScript的:

var totalLinealFootage = 0,i,p,f,j;
for (i = 0; i < 1; i+=1) {
    p = document.getElementById('pf' + i).value;
    f = document.getElementById('ff' + i).value;
    j = (document.getElementById('if' + i).value)/12;
    totalLinealFootage += ((f+j)*p);
    console.log(totalLinealFootage);
}

这对我有用。就像@ T.J Crowder说的那样,你需要确保你正在使用输入,并且你有从0到24的所有输入。此外,我更改了循环内部的var i,因为这是令人困惑的,因为你使用它来控制循环计数并将变量移动到循环之外,所以没有重新定义每次传递。

编辑:也请参阅第一个答案。我确实认为这是在循环中重新定义的var。