【发布时间】:2013-12-17 02:33:12
【问题描述】:
我正在创建一个交互式发票,我对编程非常陌生,但到目前为止一切都很好。我可以在各个网站上找到我最喜欢的东西,这是最好的。
在 HTML 中,我有各种表格,其中包含 40 个左右不同的输入字段,例如:
<tr>
<td><input type="text" id="idDescLine15" name="fDescLine15" size="50"> </td>
<td><input type="number" id="idQTY15" name="nQTY15" size="5"> </td>
<td><input type="number" id="idPrice15" name="nPrice15" size="5"> </td>
<td class="Checkbox"><input type="checkbox" id="idTax15" name="nTax1"> </td>
<td class="TotalCol"><p class="TotalLine" id="idTotalLine15">0.00</p> </td>
</tr>
我有以下函数计算每行的总行数(数量 * 价格)。上面的 HTML 代码适用于第 15 行。所有其他设置都相同。
<script>
function Calculate()
{
var vSTotalTax = 0;
for (var i=1;i<16;i++)
{
var vbuildQTY = 'idQTY' + i;
var vbuildPrice = 'idPrice' + i;
var vbuildTotalLine = 'idTotalLine' + i;
var vQTY=document.getElementById(vbuildQTY).value;
var vPrice=document.getElementById(vbuildPrice).value;
var vTotalLine = (vQTY * vPrice);
document.getElementById(vbuildTotalLine).innerHTML = parseFloat(Math.round(vTotalLine * 100) / 100).toFixed(2);
vSTotalTax = vSTotalTax + vTotalLine;
}
document.getElementById(idSTotalTax).innerHTML = parseFloat(Math.round(vSTotalTax * 100) / 100).toFixed(2);
}
</script>
循环内的第一个“document.getElementById(vbuildTotalLine)”可以正常工作,并返回每一行的总数。
第二个“document.getElementById(idSTotalTax) 没有。它在 HTML 中的设置是一样的:
<tr>
<td><p class="TotalLabel">Sous-total taxable:</p></td>
<td class="TotalCol"><p class="TotalLine" id="idSTotalTax">0.00</p></td>
</tr>
当我单击“计算”按钮时,页面上显示第 238 行的 document.getElementById 为空或不是对象的错误。两者之间的唯一区别是它在不同表中的 HTML 位置。我尝试使用已经工作的“idTotalLine”字段之一,但我继续遇到同样的错误。
帮助。谢谢。
【问题讨论】:
-
我相信你想传递 字符串
"idSTotalTax"。发生的情况是变量idSTotalTax已经引用了 ID 为 idSTotalTax 的元素,因此您将 DOM 元素作为参数传递给getElementById,这将不起作用。 -
您的 javascript 代码中的“idSTotalTax”是什么?
-
我修改了 (idSTotalTax) 行以包含单引号并且它有效。谢谢。将您的评论作为答案,以便我接受。
标签: javascript html