IE9 Compatibility Mode Error: Unable to get value of the property '0': object is null or undefined
IE9 Compatibility Mode Error: Unable to get value of the property '0': object is null or undefined
我正在尝试获取 table 中 <tr>
元素的子元素。我需要获取每个单独的 <td>
单元格。由于基础设施原因,我不能使用 jQuery,只能使用 JavaScript。我的 JavaScript 看起来像这样:
var feeTable = document.getElementById("feeTable");
function gatherRowData() {
console.log("gathering row data");
var rows = this.parentNode.children; //This is where it fails.
var state = rows[0].innerText;
var county = rows[1].innerText;
var city = rows[2].innerText;
console.log("state: " + state);
document.getElementById("state_code").value = state;
document.getElementById("county_name").value = county;
document.getElementById("city_name").value = city;
}
//Loop through Vehicle Fee Changes to find any empty cells in county, city, or start date.
for (var i = 0; row = feeTable.rows[i]; i++) {
var county = row.cells[1];
var city = row.cells[2];
var startDate = row.cells[6];
if (county.innerText == "") {
county.style.backgroundColor = "#FF0000";
showError(invalidCells);
}
if (city.innerText == "") {
city.style.backgroundColor = "#FF0000";
showError(invalidCells);
}
if (startDate.innerText == "") {
startDate.style.backgroundColor = "#FF0000";
showError(invalidCells);
}
if (document.addEventListener) {
row.cells[8].addEventListener("click", gatherRowData);
} else if (document.attachEvent) { //Support for IE
row.cells[8].attachEvent("onclick", gatherRowData);
}
}
onClick 侦听器工作正常,但是当我尝试获取 table 行的子项时,出现错误:Error message: Unable to get value of the property '0': object is null or undefined
它在所有其他浏览器和 IE9 中工作正常没有打开兼容模式(需要在兼容模式下运行)。我错过了什么能让我得到 tr
元素的子元素?
当feeTable为空值时可能出现此错误
var feeTable = document.getElementById("feeTable");
尝试在控制台中写入 feeTable 的值,并检查它是否具有 null 以外的正确值。
我找到了解决问题的方法。事实证明,当您使用 attachEvent 附加事件侦听器时,JavaScript 事件处理函数中对 this
的引用实际上并没有引用被单击的对象。它表示整个 Window 对象。我不得不使用稍微不那么优雅的解决方案:
row.cells[8].onclick = gatherRowData;
这是唯一适用于不支持 addEventListener
的 IE 版本的解决方案。使用这个解决方案,我的其余代码工作正常,this
引用了 <td>
元素,因为它应该是。
我正在尝试获取 table 中 <tr>
元素的子元素。我需要获取每个单独的 <td>
单元格。由于基础设施原因,我不能使用 jQuery,只能使用 JavaScript。我的 JavaScript 看起来像这样:
var feeTable = document.getElementById("feeTable");
function gatherRowData() {
console.log("gathering row data");
var rows = this.parentNode.children; //This is where it fails.
var state = rows[0].innerText;
var county = rows[1].innerText;
var city = rows[2].innerText;
console.log("state: " + state);
document.getElementById("state_code").value = state;
document.getElementById("county_name").value = county;
document.getElementById("city_name").value = city;
}
//Loop through Vehicle Fee Changes to find any empty cells in county, city, or start date.
for (var i = 0; row = feeTable.rows[i]; i++) {
var county = row.cells[1];
var city = row.cells[2];
var startDate = row.cells[6];
if (county.innerText == "") {
county.style.backgroundColor = "#FF0000";
showError(invalidCells);
}
if (city.innerText == "") {
city.style.backgroundColor = "#FF0000";
showError(invalidCells);
}
if (startDate.innerText == "") {
startDate.style.backgroundColor = "#FF0000";
showError(invalidCells);
}
if (document.addEventListener) {
row.cells[8].addEventListener("click", gatherRowData);
} else if (document.attachEvent) { //Support for IE
row.cells[8].attachEvent("onclick", gatherRowData);
}
}
onClick 侦听器工作正常,但是当我尝试获取 table 行的子项时,出现错误:Error message: Unable to get value of the property '0': object is null or undefined
它在所有其他浏览器和 IE9 中工作正常没有打开兼容模式(需要在兼容模式下运行)。我错过了什么能让我得到 tr
元素的子元素?
当feeTable为空值时可能出现此错误
var feeTable = document.getElementById("feeTable");
尝试在控制台中写入 feeTable 的值,并检查它是否具有 null 以外的正确值。
我找到了解决问题的方法。事实证明,当您使用 attachEvent 附加事件侦听器时,JavaScript 事件处理函数中对 this
的引用实际上并没有引用被单击的对象。它表示整个 Window 对象。我不得不使用稍微不那么优雅的解决方案:
row.cells[8].onclick = gatherRowData;
这是唯一适用于不支持 addEventListener
的 IE 版本的解决方案。使用这个解决方案,我的其余代码工作正常,this
引用了 <td>
元素,因为它应该是。