我正在創建一個交互式發票,我對編程非常陌生,但迄今爲止這麼好。我可以找到我在這個網站上最棒的東西。Javascript - 爲什麼一個document.getElementById()可以工作,而不是另一個?
在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是null或者不是一個對象,兩者之間的唯一區別就是它在不同的表格中的HTML位置,我嘗試過使用已經工作過的'idTotalLine'字段之一,但我繼續與同樣的錯誤。
幫助。謝謝。
我相信你想通過** **字符串'「idSTotalTax」'。會發生什麼是變量'idSTotalTax'已經引用ID爲IDSTotalTax的元素,因此您將DOM元素作爲參數傳遞給'getElementById',這是行不通的。 –
什麼是您的JavaScript代碼中的「idSTotalTax」? –
我修改了這一行(idSTotalTax)以包含單引號,它起作用。謝謝。把你的評論作爲答案,我可以接受它。 – PacaMama