0

我有一個簡單的嘗試做一個JavaScript函數如下頁面:innerHTML的追加在IE9

document.getElementById("chatTable").innerHTML += "<tr><td colspan=\"3\">  ⏎ 
    <span color=\"purple\">------------Switched to channel: " + channelName + ⏎ 
    "------------</span></td></tr>"; 

這個工作在其他瀏覽器我都試過(火狐,Chrome,Safari瀏覽器,Android手機瀏覽器, iPhone瀏覽器),但不在IE9中。是的,我確實有一個ID爲chatTable的表和channelName變量確實設置。我知道我可以使用表格對象的DOM(我認爲它的insertRow()或其他東西)實際上可以添加一個表格行,但現在它已經成爲一個原則問題,並且它已經讓我發瘋了。我試圖將+=更改爲=,但沒有運氣。我也嘗試將表設置爲它自己的變量在JavaScript中,然後嘗試編輯innerHTML,仍然沒有運氣。哦,我確實有:

<!DOCTYPE HTML> 

在我的頁面中。我究竟做錯了什麼?!

+0

文件加載後執行了Javascript文件嗎?瀏覽器開發控制檯中的任何錯誤? – Raptor 2012-07-09 02:20:32

回答

6

不能使用.innerHTML.outerHTML任何以下元素:COL,COLGROUP,FRAMESET,HTML,樣式,TABLE,TBODY,TFOOT,THEAD,標題或TR。

請參閱Building Tables Dynamically使用Microsoft的表格對象模型來操作Internet Explorer中的表格。

這可能會改變IE的未來版本,我想,但這是你現在留下的東西。

+0

謝謝你爲我清理!我現在用javascript構建表格,而不是附加到innerHTML,它工作得很好。 – user1510816 2012-07-10 00:44:16

1

除了Jim的回答,當你追加HTML時,你會銷燬並重建現有的表。即使在讓你這樣做的瀏覽器,一般較好的解決方案,將追加一行是這樣的:

var table = document.getElementById("chatTable"), 
    row = table.insertRow(-1), //-1 means at end 
    cell = row.insertCell(0), 
    span = document.createElement("span"); 

span.style.color = "purple"; 
span.appendChild(document.createTextNode("------------Switched to channel: " + channelName + "------------")); 
cell.colSpan = 3; 
cell.appendChild(span); 
row.appendChild(cell); 
table.appendChild(row); 

它通常是更快,你不會失去你有事情以表中的任何現有的事件處理程序。

+0

謝謝你的代碼!精美的作品。 雖然 setAttribute(「color」,「purple」); 無效,你需要做: setAttribute(「style」,「color:purple;」); 但除此之外它的完美,謝謝! – user1510816 2012-07-10 00:44:47

+0

我剛剛離開你的標記。修復。 – Dennis 2012-07-10 01:07:46

+0

哦,我猜我確實把這個... – user1510816 2012-07-12 01:12:10