我编写了一些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都没有值?
答案 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。