0

I have written some Javacript code that calculates the lineal footage of multiple values that are typed in by the user. Here is the Javascript code...

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;
    }
}

As of now no matter what values I place in the inputs totalLinealFootage has no value?

4

2 回答 2

3

我假设您的重用i会绊倒您的循环。在循环结束时,当for处理时i,它可能已经完全改变了值。

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

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

于 2013-06-07T17:59:10.730 回答
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);
}

这对我有用。就像@TJ Crowder 说的那样,您需要确保您正在使用输入,并且您拥有从 0 到 24 的所有输入。另外,我更改了循环内的 var i ,因为这很令人困惑,因为您使用它来控制循环计数并将 var 移到循环外,因此不会重新定义每次传递。

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

于 2013-06-07T18:09:51.833 回答