久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術(shù)文章
文章詳情頁

IE6/IE7/IE8/IE9中tbody的innerHTML不能賦值的完美解決方案

瀏覽:75日期:2022-06-02 11:53:36

IE6/IE7/IE8/IE9中tbody的innerHTML不能賦值,重現(xiàn)代碼如下

復(fù)制代碼 代碼如下:
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8"/>
        <title>IE6-IE9中tbody的innerHTML不能復(fù)制bug</title>
    </head>
    <body>
        <table>
            <tbody>
                <tr><td>aaa</td></tr>
            </tbody>
        </table>
        <p>
            <button id="btn1">GET</button><button id="btn2">SET</button>
        </p>
        <script>
            var tbody = document.getElementsByTagName("tbody")[0]
            function setTbody() {
                tbody.innerHTML = "<tr><td>bbb</td></tr>"
            }
            function getTbody() {
                alert(tbody.innerHTML)
            }
            btn1.onclick = function() {
                getTbody()
            }
            btn2.onclick = function() {
                setTbody()
            }
        </script>
    </body>
</html>

兩個(gè)按鈕,第一個(gè)獲取tbody的innerHTML,第二個(gè)設(shè)置tbody的innerHTML。

獲取時(shí)所有瀏覽器都彈出了tr的字符串,但設(shè)置時(shí)IE6-9不支持,而且報(bào)錯(cuò),如圖

可以利用特性判斷來看瀏覽器是否支持tbody的innerHTML設(shè)值

復(fù)制代碼 代碼如下:
var isupportTbodyInnerHTML = function () {
    var table = document.createElement("table")
    var tbody = document.createElement("tbody")
    table.appendChild(tbody)
    var boo = true
    try{
        tbody.innerHTML = "<tr></tr>"
    } catch(e) {
        boo = false
    }
    return boo
}()
alert(isupportTbodyInnerHTML)

對于IE6-IE9里如果要設(shè)置tbody的innerHTML,可以使用如下替代方法

復(fù)制代碼 代碼如下:
function setTBodyInnerHTML(tbody, html) {
    var div = document.createElement("div")
    div.innerHTML = "<table>" + html + "</table>"
    while(tbody.firstChild) {
        tbody.removeChild(tbody.firstChild)
    }
    tbody.appendChild(div.firstChild.firstChild)
}

用一個(gè)div來包含一個(gè)table,然后刪除tbody里的所有元素,最后給tbody添加div的第一個(gè)元素的第一個(gè)元素,即div>table>tr。

當(dāng)然還有一個(gè)更精簡的版本,它直接采用replaceChild方法替換

復(fù)制代碼 代碼如下:
function setTBodyInnerHTML(tbody, html) {
    var div = document.createElement("div")
    div.innerHTML = "<table>" + html + "</table>"
    tbody.parentNode.replaceChild(div.firstChild.firstChild, tbody)
}

從MSDN上記錄上看 col、colGroup、frameset、html、head、style、table、tfoot、tHead、title和tr的innerHTML都是只讀的(IE6-IE9)。

The innerHTML property is read-only on the col, colGroup, frameSet, html, head, style, table, tBody, tFoot, tHead, title, and tr objects.

You can change the value of the title element using the document.title property.

To change the contents of the table, tFoot, tHead, and tr elements, use the table object model described in Building Tables Dynamically. However, to change the content of a particular cell, you can use innerHTML.

標(biāo)簽: CSS HTML
相關(guān)文章:
主站蜘蛛池模板: 国产高清视频 | 成人午夜在线 | 久久久久久久一区二区 | 国偷自产av一区二区三区 | 成人免费视频网站在线看 | 亚洲欧美91 | 国产在线区 | 一区二区日韩精品 | 欧美卡一卡二 | 激情综合色综合久久综合 | 99国产精品久久久久久久 | 一区福利视频 | 国产一区免费 | 亚洲国产二区三区 | 国产欧美久久久久久 | 国产精品一卡二卡三卡 | 欧美成人免费一级人片100 | 日韩艹逼视频 | 午夜在线电影 | 久久资源av | 国产免费一区二区三区 | 粉嫩视频在线观看 | 亚洲九九| 日韩免费在线观看视频 | 亚洲美女视频 | 成人国产精品久久 | 色婷婷亚洲国产女人的天堂 | 亚洲一区二区三区四区 | 日韩综合 | 6080yy精品一区二区三区 | 青娱乐一区| 综合在线视频 | 免费观看一级毛片 | 亚洲精品欧美精品 | 亚洲精品久久久久久一区二区 | 久久e久久 | 亚洲综合一二区 | 亚洲一区二区三区四区 | 99热在线播放 | 大伊人久久 | 日韩国产欧美视频 |