JavaScript代码
function update() {
var newAmt = 0;
var newtable = document.getElementById("tbl");
for ( var i = 0; i < newtable.rows.length; i++) {
innerTable = newtable.rows[i].cells[0].childNodes[0];
if ( (innerTable.rows[0].cells[5].childNodes[0].value != "")
&& !(isNotNumber(innerTable.rows[0].cells[5].childNodes[0].value))) {
newAmt = newAmt + parseFloat(innerTable.rows[0].cells[5].childNodes[0].value);
}
}
</script>
innerTable.rows [0]抛出异常无法获取属性&#39; 0&#39; Internet Explorer中的未定义或空引用
但是同样的代码在eclipse网络浏览器中完美运行
HTML
<table id="tbl">
<logic:iterate name="editList" property="list" id="editForm">
<tr>
<td>
<table>
<tr>
<td></td>
<td /></td>
<td></td>
<td /></td>
<td></td>
<td><html:text name="Amt" onchange="update()" /></td>
</tr>
<tr>
</tr>
<tr>
</tr>
</table>
</td>
</tr>
</logic:iterate>
</table>
过去两天被困在这一个。完全厌倦了一些人帮助我
先谢谢
答案 0 :(得分:0)
生成此异常是因为innerTable.rows的值为null或未定义。并且您正在尝试获取未定义或空值的第0个索引。在获取innerTable.rows的值之前,先进行null / undefined检查。
要验证,您可以在控制台中记录innerTable.rows的值。
答案 1 :(得分:0)
尝试使用这个更简单,不引人注目的代码 注意我删除了内联事件处理程序
function isNumber(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
}
var fields, newAmt = 0;
// unobtrusive version ignoring table
window.onload = function() {
fields = document.querySelectorAll("[name=Amt]");
for (var i = 0; i < fields.length; i++) {
fields[i].onkeyup = function() {
newAmt = 0;
for (var i = 0; i < fields.length; i++) {
var val = fields[i].value;
newAmt += val != "" && isNumber(val) ? parseFloat(val) : 0;
}
console.log(newAmt);
}
}
};
// fixing your code - not using nodes will help IE too:
function update() {
var newAmt = 0;
var newtable = document.getElementById("tbl");
for (var i = 0; i < newtable.rows.length; i++) {
var innerTable = newtable.rows[i].cells[0].getElementsByTagName('table')[0],
input = innerTable.rows[0].cells[5].getElementsByTagName('input'),
val = input && input.length ? input[0].value : 0;
if (val!="" && isNumber(val)) {
newAmt += parseFloat(val);
}
}
console.log(newAmt);
}
Just start typing numbers
<table id="tbl">
<tr>
<td>
<table>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td><input type="text" name="Amt" /></td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td></td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td><input type="text" name="Amt" /></td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td></td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td><input type="text" name="Amt" /></td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td></td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td><input type="text" name="Amt" /></td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td></td>
</tr>
</table>
</td>
</tr>
</table>
<hr>
<button type="button" onclick="update()">Test your fixed code</button>