IE 下的只讀 innerHTML
更新時(shí)間:2009年08月21日 00:25:25 作者:
可以先使用 DOM 的 createElement 方法創(chuàng)建 tr 和 td,然后對(duì) td 的 innerHTML 進(jìn)行相應(yīng)操作,最后用 appendChild 方法把創(chuàng)建的元素添加到 DOM 樹(shù)中。這樣在 IE 下就可以正常運(yùn)行了。
今天做東西遇到一個(gè)問(wèn)題,我試圖動(dòng)態(tài)為一個(gè)表格添加多行數(shù)據(jù),先定義了一個(gè)table:
<table>
<thead>
</thead>
<tbody id="filelist">
</tbody>
</table>
然后在JavaScript 中這樣操作:
for(var i in entries){
...
var filetable = document.getElementById('filelist');
filetable.innerHTML += '<tr><td>111</td><td>222</td></tr>';
}
在FireFox 下這么干是沒(méi)有問(wèn)題的,但是放到 IE 下面就死活不行了,問(wèn)了下同事+搜索了一下,發(fā)現(xiàn)在 IE 下 COL, COLGROUP, FRAMESET, HTML, STYLE, TABLE, TBODY, TFOOT, THEAD, TITLE, TR 這些元素的 innerHTML 屬性都是只讀的,不能直接操作。但是也不是沒(méi)有解決辦法,TD 的innerHTML 還是可以操作的,上面的代碼可以這樣修改:
for(var i in entries){
...
var filetable = document.getElementById('filelist');
var tr = document.createElement('tr');
var td1 = document.createElement('td');
td1.innerHTML = '111';
var td2 = document.createElement('td');
td2.innerHTML = '222';
tr.appendChild(td1);
tr.appendChild(td2);
filetable.appendChild(tr);
}
可以先使用 DOM 的 createElement 方法創(chuàng)建 tr 和 td,然后對(duì) td 的 innerHTML 進(jìn)行相應(yīng)操作,最后用 appendChild 方法把創(chuàng)建的元素添加到 DOM 樹(shù)中。這樣在 IE 下就可以正常運(yùn)行了。需要注意的是,如果你的 table 沒(méi)有 tbody,而是這樣:
<table id="filelist"></table>
這個(gè)時(shí)候就不能對(duì) table 直接使用 appendChild 方法了,因?yàn)镮E6 下 table 元素是不支持 appendChild 方法的(IE8 貌似已經(jīng)支持了)。
網(wǎng)上也有人提出用 insertRow() 等方法來(lái)做,不過(guò)這個(gè)方法對(duì)不同瀏覽器的兼容也是有問(wèn)題的(在FireFox 下就需要使用 insertRow(-1) ),所以就沒(méi)用。
BTW,雖然之前也有意識(shí)地看了不少 JS 的資料,但還是實(shí)踐出真知啊,現(xiàn)在剛開(kāi)始手忙腳亂的,學(xué)習(xí)淡定ING
復(fù)制代碼 代碼如下:
<table>
<thead>
</thead>
<tbody id="filelist">
</tbody>
</table>
然后在JavaScript 中這樣操作:
復(fù)制代碼 代碼如下:
for(var i in entries){
...
var filetable = document.getElementById('filelist');
filetable.innerHTML += '<tr><td>111</td><td>222</td></tr>';
}
在FireFox 下這么干是沒(méi)有問(wèn)題的,但是放到 IE 下面就死活不行了,問(wèn)了下同事+搜索了一下,發(fā)現(xiàn)在 IE 下 COL, COLGROUP, FRAMESET, HTML, STYLE, TABLE, TBODY, TFOOT, THEAD, TITLE, TR 這些元素的 innerHTML 屬性都是只讀的,不能直接操作。但是也不是沒(méi)有解決辦法,TD 的innerHTML 還是可以操作的,上面的代碼可以這樣修改:
復(fù)制代碼 代碼如下:
for(var i in entries){
...
var filetable = document.getElementById('filelist');
var tr = document.createElement('tr');
var td1 = document.createElement('td');
td1.innerHTML = '111';
var td2 = document.createElement('td');
td2.innerHTML = '222';
tr.appendChild(td1);
tr.appendChild(td2);
filetable.appendChild(tr);
}
可以先使用 DOM 的 createElement 方法創(chuàng)建 tr 和 td,然后對(duì) td 的 innerHTML 進(jìn)行相應(yīng)操作,最后用 appendChild 方法把創(chuàng)建的元素添加到 DOM 樹(shù)中。這樣在 IE 下就可以正常運(yùn)行了。需要注意的是,如果你的 table 沒(méi)有 tbody,而是這樣:
<table id="filelist"></table>
這個(gè)時(shí)候就不能對(duì) table 直接使用 appendChild 方法了,因?yàn)镮E6 下 table 元素是不支持 appendChild 方法的(IE8 貌似已經(jīng)支持了)。
網(wǎng)上也有人提出用 insertRow() 等方法來(lái)做,不過(guò)這個(gè)方法對(duì)不同瀏覽器的兼容也是有問(wèn)題的(在FireFox 下就需要使用 insertRow(-1) ),所以就沒(méi)用。
BTW,雖然之前也有意識(shí)地看了不少 JS 的資料,但還是實(shí)踐出真知啊,現(xiàn)在剛開(kāi)始手忙腳亂的,學(xué)習(xí)淡定ING
您可能感興趣的文章:
- js的.innerHTML = ""IE9下顯示有錯(cuò)誤的解決方法
- IE6-IE9不支持table.innerHTML的解決方法分享
- IE6/7/8/9中Table/Select的innerHTML不能賦值的解決方法
- 僅IE6/7/8中innerHTML返回值忽略英文空格的問(wèn)題
- Javascript在IE下設(shè)置innerHTML時(shí)出現(xiàn)未知的運(yùn)行時(shí)錯(cuò)誤的解決方法
- 解決IE下select標(biāo)簽innerHTML插入option的BUG(兼容IE,FF,Opera,Chrome,Safari)
- innerHTML 和 getElementsByName 在IE下面的bug 的解決
- IE bug table元素的innerHTML
- JS 動(dòng)態(tài)獲取節(jié)點(diǎn)代碼innerHTML分析 [IE,FF]
- IE innerHTML,outerHTML所引起的問(wèn)題
- IE6與IE7中,innerHTML獲取param的區(qū)別
- IE6/IE7/IE8/IE9中tbody的innerHTML不能賦值的完美解決方案
相關(guān)文章
js實(shí)現(xiàn)杯子倒水問(wèn)題自動(dòng)求解程序
智力測(cè)試題經(jīng)常遇到類似的邏輯題,給幾個(gè)容量不等的杯子,讓你倒出多少的水,感興趣的朋友可以參考下哈希望可以幫助到你2013-03-03
微信小程序?qū)崿F(xiàn)的picker多級(jí)聯(lián)動(dòng)功能示例
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)的picker多級(jí)聯(lián)動(dòng)功能,結(jié)合實(shí)例形式分析了微信小程序picker組件使用及wx.request后臺(tái)交互相關(guān)操作技巧,需要的朋友可以參考下2019-05-05
JavaScript 實(shí)現(xiàn)鼠標(biāo)拖動(dòng)元素實(shí)例代碼
這篇文章主要介紹了JavaScript 實(shí)現(xiàn)鼠標(biāo)拖動(dòng)元素實(shí)例代碼,需要的朋友可以參考下2014-02-02
微信小程序switch開(kāi)關(guān)選擇器使用詳解
這篇文章主要為大家詳細(xì)介紹了微信小程序switch開(kāi)關(guān)選擇器的使用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01
JS實(shí)現(xiàn)簡(jiǎn)單的星期格式轉(zhuǎn)換功能示例
這篇文章主要介紹了JS實(shí)現(xiàn)簡(jiǎn)單的星期格式轉(zhuǎn)換功能,涉及JavaScript基于Date()對(duì)象的日期時(shí)間操作技巧,需要的朋友可以參考下2018-07-07
對(duì)象特征檢測(cè)法判斷瀏覽器對(duì)javascript對(duì)象的支持
就是將需要檢測(cè)的方法/對(duì)象作為if語(yǔ)句的判斷條件,具體做法如下2009-07-07
uniapp項(xiàng)目實(shí)踐自定義分享組件示例
這篇文章主要為大家介紹了uniapp項(xiàng)目實(shí)踐自定義分享組件示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09

