2009-10-06 104 views
1

我目前在IE8中的rowIndex有一個很大的問題。當我打電話給我的頁面時,我有一個空的表格元素。使用Javascript,我現在將行和列添加到此表中。JavaScript中的RowIndex

// Create Elements 
tr = document.createElement('tr'); 
td = document.createElement('td'); 
// Append Elements to existing Table 
tr.appendChild(td); 
table.appendChild(tr); 

用戶後來有選項刪除這些行。要刪除它們,我只需調用表的deleteRow函數並將rowIndex作爲參數傳遞。

table.deleteRow(tr.rowIndex); 

在Firefox這工作正常。 rowIndex是正確的,行可以被刪除。在IE8中,rowIndex總是-1。 deleteRow函數 - 當然 - 找不到匹配的行,並且行不會被刪除。

有誰知道這個問題,並有一個很好的解決方案呢?

+0

有沒有理由不使用jQuery或其他JavaScript框架? – roosteronacid 2009-10-06 08:13:06

+2

爲什麼每個單行JavaScript問題都必須用「使用jQuery」來解答? – bobince 2009-10-06 14:11:36

+0

我想使用jquery不會是一個壞主意,但應用程序已經很大,包括jQuery在整個應用程序將是很多工作。只是添加它爲這個單行 - 就像bobince說的 - 會浪費資源 – SvenFinke 2009-10-07 12:58:51

回答

2

你可以試試removeChild

這是那麼容易,因爲:

table.removeChild(tr); 
+0

工作正常:)謝謝 – SvenFinke 2009-10-06 08:19:21

+1

我建議'tr.parentNode.removeChild(tr)',所以你不必擔心關於'tr'是否在''中。 – bobince 2009-10-06 14:13:44

3

IE仍然會給你一個-1的rowIndex如果行是表,但表中沒有附加到文檔。

您可以通過添加表格文檔修復它,但它可能更容易通過簡單地使用通用DOM級別1核心方法,而不是特定的表-DOM-HTML的方法來避免這個問題:

tr.parentNode.removeChild(tr); 

這可能也是最好創建一個tbody元素,並把行;否則瀏覽器可能會意外地爲你做。