午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁技術文章
文章詳情頁

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

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

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

復制代碼 代碼如下:
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8"/>
        <title>IE6-IE9中tbody的innerHTML不能復制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>

兩個按鈕,第一個獲取tbody的innerHTML,第二個設置tbody的innerHTML。

獲取時所有瀏覽器都彈出了tr的字符串,但設置時IE6-9不支持,而且報錯,如圖

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

復制代碼 代碼如下:
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里如果要設置tbody的innerHTML,可以使用如下替代方法

復制代碼 代碼如下:
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)
}

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

當然還有一個更精簡的版本,它直接采用replaceChild方法替換

復制代碼 代碼如下:
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.

標簽: CSS HTML
相關文章:
主站蜘蛛池模板: 国产精品成人免费一区久久羞羞 | 亚洲成人一二三区 | 半推半就一ⅹ99av | 国产亚韩 | 一区二区三区激情 | 国产原创视频在线 | 国产黄色精品视频 | 91亚洲欧美| 天堂av观看| 亚洲国产一区在线观看 | 欧美黑人三级 | 久久婷婷av | 欧美日韩视频免费观看 | 色桃花网| 麻豆视频国产 | 亚洲综合色在线 | 欧美久久久久久久久中文字幕 | 依人99| 成人午夜在线视频 | 天堂av资源在线 | 免费无遮挡在线观看视频网站 | 免费观看一区二区三区 | 96精品国产 | 91成年人视频 | 中文字幕av久久爽av | 最新日韩av在线 | 性瑜伽xxxtⅴ | 黄色大片一级 | 毛片在哪里看 | 少妇在线视频 | 手机看片国产精品 | 日韩在线视频网址 | 亚洲精品成人 | 91在线精品一区二区三区 | 羞羞网站视频 | 色婷婷综合网 | 国产永久av | www.色综合 | 成年人精品 | 国产第一页在线播放 | 国产精品久久久久久久久免费 |