av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

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

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

瀏覽:34日期: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
相關文章:
主站蜘蛛池模板: 久久大陆| 久久精品91久久久久久再现 | 在线免费观看黄网 | 久久国产精品99久久久久 | 97精品国产| 午夜影院| 伊人网站视频 | 中文字幕 在线观看 | 亚洲精品视 | 免费爱爱视频 | 国产精品久久久久久婷婷天堂 | 国产探花在线精品一区二区 | 毛片视频网站 | 午夜视频在线免费观看 | 国产精品久久久久久久久污网站 | 日日操天天射 | 成年人在线观看视频 | 日韩欧美高清 | 一区二区av在线 | 99久久电影 | 亚洲精品一区二区三区蜜桃久 | 精品一二区 | 久久精品网 | 亚洲国产精品人人爽夜夜爽 | 精品久久香蕉国产线看观看亚洲 | 国产精品区二区三区日本 | 欧美aaa级 | 一级电影免费看 | 亚洲欧美高清 | 国产成人啪免费观看软件 | 精品三区| 在线只有精品 | www.亚洲区| 欧美日韩在线一区二区 | av毛片 | 亚洲精品乱码久久久久久久久 | 欧美日韩精品免费观看 | 欧美日韩高清在线一区 | 国产精品一区二区三区在线 | 亚洲在线免费观看 | 欧美日韩精品一区二区三区四区 |