2015-06-23 46 views
0

我試圖讓表中的<tr>元素的子元素。我需要得到每個個人<td>單元格。我不能使用jQuery,只有基於基礎設施原因的JavaScript。我的JavaScript看起來像這樣:IE9兼容模式錯誤:無法獲取屬性「0」的值:對象爲空或未定義

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監聽器工作得很好,但是當我嘗試獲取錶行的孩子,它給我的錯誤:Error message: Unable to get value of the property '0': object is null or undefined它工作正常所有其他瀏覽器和IE9不兼容模式(需要以兼容模式運行)。我錯過了什麼可以讓我得到tr元素的孩子?當feeTable具有空值

var feeTable = document.getElementById("feeTable"); 

控制檯feeTable的嘗試寫值可能會出現

+0

也許試試'.parentNode.getElementsByTagName('td')'而不是'.parentNode.children' –

回答

0

我找到了解決我的問題的方法。事實證明,當您使用attachEvent附加事件偵聽器時,JavaScript事件處理函數中對this的引用並不實際引用正在被單擊的對象。它代表整個Window對象。我不得不使用一個稍微不那麼優雅的解決方案:

row.cells[8].onclick = gatherRowData; 

這是唯一會爲不支持addEventListener IE的版本一起使用的解決方案。使用這種解決方案,我的代碼的其餘部分工作正常,this引用<td>元素,因爲它應該。

0

此錯誤,並檢查它比另外null應有的價值。

相關問題