IE9和IE9以下瀏覽器tbody無法使用innerHTML解決方案
本章節介紹一table表格的tbody元素的一個特點,那就是在IE9和IE9以下瀏覽器中,無法使用innerHTML設定元素的html內容,但是可以獲取元素的html內容,下面就通過程式碼例項介紹一下如何解決此問題。
先看一段程式碼例項:
[HTML] 純文字檢視 複製程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script type="text/javascript"> window.onload=function(){ var tbody=document.getElementsByTagName('tbody')[0]; function setTbody(){ tbody.innerHTML='<tr><td>softwhy.com</td></tr>'; } function getTbody(){ alert(tbody.innerHTML) } btGet.onclick=function(){ getTbody() } btSet.onclick=function() { setTbody() } } </script> </head> <body> <table> <tbody> <tr><td>螞蟻部落</td></tr> </tbody> </table> <button id="btGet">獲取內容</button> <button id="btSet">設定內容</button> </body> </html>
在上面的程式碼中,可以在所有的主流瀏覽器中獲取tbody下面的html內容,但是卻無法設定。
下面就介紹一下此問題的解決方案,希望能夠給需要的朋友帶來幫助。
最好的方式就是首先檢測一下是否支援innerHTML屬性,如果支援,則直接使用此屬性,否則就採用其他的方案。
程式碼如下:
[HTML] 純文字檢視 複製程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script type="text/javascript"> window.onload=function(){ var tbody=document.getElementsByTagName('tbody')[0]; 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 }() function setTBodyInnerHTML(tbody, html){ var div=document.createElement('div'); div.innerHTML='<table>'+html+'</table>'; tbody.parentNode.replaceChild(div.firstChild.firstChild,tbody) } btSet.onclick=function(){ var str="<tr><td>softwhy.com</td></tr>"; if(isupportTbodyInnerHTML){ setTBodyInnerHTML(tbody,str); } else{ tbody.innerHTML=str; } } } </script> </head> <body> <table> <tbody> <tr><td>螞蟻部落</td></tr> </tbody> </table> <button id="btSet">設定內容</button> </body> </html>
上面的程式碼實現了我們的要求,下面介紹一下它的實現過程。
一.程式碼註釋:
1.window.onload=function(){},文件內容完全載入完畢再去執行函式中的程式碼。2.var tbody=document.getElementsByTagName('tbody')[0],獲取第一個tbody元素物件。
3. var isupportTbodyInnerHTML=function(){}(),函式可以返回一個布林值用來說明當前瀏覽器是否支援tbody的innerHTML屬性。
4.var table=document.createElement('table'),建立一個table元素物件。5.var tbody = document.createElement('tbody'),建立一個tbody元素物件。
6.table.appendChild(tbody),將tbody新增到table中。
7.var boo = true,設定一個變數並賦初值為true。
8.try{
tbody.innerHTML='<tr></tr>'
}
catch(e){
boo = false
},如果支援innerHTML,那麼就使用它正常賦值,否則會報錯跳入catch語句,這樣的話boo就會被賦值false。
9.return boo,返回boo。
10.function setTBodyInnerHTML(tbody, html),此函式可以實現相容效果,第一個引數是tbody元素物件,第二個引數是要設定的內容html字串。
11.var div=document.createElement('div'),建立一個div物件。
12.div.innerHTML='<table>'+html+'</table>',html字串。
13.tbody.parentNode.replaceChild(div.firstChild.firstChild,tbody),進行替換相關操作,需要特別注意的是div.firstChild.firstChild很多人以為是tr元素,其實並不是,而是tbody,因為如果一個表格沒有人為新增tbody的話,瀏覽器會預設給其新增一個。
二.相關閱讀:
1.getElementsByTagName()函式可以參閱document.getElementsByTagName()一章節。
2.createElement()函式可以參閱js createElement()一章節。
3.innerHTML屬性可以參閱js innerHTML一章節。
4.replaceChild()函式可以參閱javascript replaceChild()一章節。
相關文章
- IE9和IE9以下瀏覽器中tbody不支援innerHTML解決方案IE9瀏覽器HTML
- IE9以下瀏覽器的innerHTML忽略空格怎麼辦IE9瀏覽器HTML
- 針對IE9瀏覽器的CSS 相容性寫法IE9瀏覽器CSS
- Vue 相容 ie9 的全面解決方案VueIE9
- 相容ie9以下的polyfill類庫IE9
- vue解決IE9及以下不顯示placeholder的問題VueIE9
- windows10瀏覽器老是無法正常開啟解決方案Windows瀏覽器
- iview在ie9及以上的相容問題解決方案ViewIE9
- win10瀏覽器無法使用中文輸入法的解決方法Win10瀏覽器
- 谷歌瀏覽器下jquery無法獲取圖片的尺寸解決方案谷歌瀏覽器jQuery
- IE瀏覽器無法儲存cookie的解決方法瀏覽器Cookie
- dns解析失敗無法瀏覽器上網解決辦法DNS瀏覽器
- ie9不顯示flash的解決方法IE9
- IE瀏覽器非同步請求無法獲取最新資料的解決方案瀏覽器非同步
- 谷歌瀏覽器無法訪問此網站怎麼解決 chrome瀏覽器無法開啟網頁怎麼辦谷歌瀏覽器網站Chrome網頁
- chrome瀏覽器最小字號解決方案Chrome瀏覽器
- Ubuntu解決火狐瀏覽器無法同步書籤的問題Ubuntu瀏覽器
- 圖解電腦上Firefox瀏覽器無法開啟的解決辦法圖解Firefox瀏覽器
- 谷歌瀏覽器打不開網頁怎麼解決 谷歌瀏覽器電腦上無法開啟網頁解決方法谷歌瀏覽器網頁
- 解決新版谷歌瀏覽器無法關閉視窗的問題谷歌瀏覽器
- Vue2.0 之 自帶瀏覽器裡無法開啟(相容IE處理) - 解決方案 命令Vue瀏覽器
- google瀏覽器打不開網頁是怎麼回事 谷歌瀏覽器無法上網怎麼解決Go瀏覽器網頁谷歌
- CSS瀏覽器相容性的4個解決方案:瀏覽器CSS樣式初始化、瀏覽器私有屬性,CSS hack語法和自動化外掛CSS瀏覽器
- Win10系統edge瀏覽器無法聯網的解決方法Win10瀏覽器
- angular瀏覽器相容性問題解決方案Angular瀏覽器
- 突破瀏覽器域名併發限制的解決方案瀏覽器
- 瀏覽器同源策略及 Ajax 跨域解決方案瀏覽器跨域
- 實現瀏覽器跨域解決方案介紹瀏覽器跨域
- chrome瀏覽器win10無法啟動怎麼辦_chrome瀏覽器win10無法啟動如何解決Chrome瀏覽器Win10
- 瀏覽器能正常訪問圖片,但是放到img src下就無法顯示的解決方案瀏覽器
- 解決在IE9,IE10瀏覽器下,程式沒有任何錯誤,easy ui頁面不載入任何資料的問題IE9IE10瀏覽器UI
- python用selenium開啟瀏覽器後瀏覽器關閉---解決辦法Python瀏覽器
- 解決JS彈出新視窗被瀏覽器阻止的解決方案JS瀏覽器
- win10 edge瀏覽器關不掉怎麼解決_win10 edge瀏覽器無法關閉修復方法Win10瀏覽器
- win10瀏覽器無法上網怎麼辦 w10自帶瀏覽器上不了網解決方法Win10瀏覽器
- uc瀏覽器字型放大解決方案瀏覽器
- win8系統Chrome無法設定預設瀏覽器解決方法Chrome瀏覽器
- 瀏覽器支援ES6的最優解決方案瀏覽器