IE9和IE9以下瀏覽器中tbody不支援innerHTML解決方案
innerHTML是最為常用的屬性之一,並且也屬於w3c標準,瀏覽器的相容性也非常的好,但是有一個地方是例外的,那就是在IE6-IE9瀏覽器中,tbody不支援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 oget=document.getElementById("get"); var oset=document.getElementById("set"); oget.onclick=function(){getTbody()} oset.onclick=function(){setTbody()} function setTbody(){ tbody.innerHTML='<tr><td>螞蟻部落二</td></tr>' } function getTbody(){ alert(tbody.innerHTML) } } </script> </head> <body> <table> <tbody> <tr><td>螞蟻部落一</td></tr> </tbody> </table> <input type="button" id="get" value="獲取內容"/> <input type="button" id="set" value="設定內容"/> </body> </html>
上面的程式碼在IE6-IE9瀏覽器中不能夠設定tbody的內容,但是能夠獲取。
下面介紹一下如何解決此問題,直接看程式碼:
[HTML] 純文字檢視 複製程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script type="text/javascript"> 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>' while(tbody.firstChild){ tbody.removeChild(tbody.firstChild) } tbody.appendChild(div.firstChild.firstChild) } window.onload=function(){ var tbody=document.getElementsByTagName('tbody')[0]; var oget=document.getElementById("get"); var oset=document.getElementById("set"); var htmlStr='<tr><td>螞蟻部落二</td></tr>'; oset.onclick=function(){ if(isupportTbodyInnerHTML){ tbody.innerHTML='<tr><td>螞蟻部落二</td></tr>' } else{ setTBodyInnerHTML(tbody,htmlStr) } } } </script> </head> <body> <table> <tbody> <tr><td>螞蟻部落一</td></tr> </tbody> </table> <input type="button" id="set" value="設定內容"/> </body> </html>
上面的程式碼實現了我們的要求,能夠實現相容所有主流瀏覽器,下面介紹一下它的實現過程。
一.程式碼註釋:
1.isupportTbodyInnerHTML是一個布林值如果是true則說明支援,否則不支援,具體可以參閱js如何判斷當前瀏覽器tbody是否支援innerHTML一章節。
2.function setTBodyInnerHTML(tbody,html){},用來實現IE6-IE9下的innerHTML效果,第一個引數是tbody物件,第二個是要設定的html內容。
3.var div=document.createElement('div'),建立一個div元素物件。
4.div.innerHTML='<table>'+html+'</table>',將div中的內容設定為表格和要新增的指定內容。
5.while(tbody.firstChild){tbody.removeChild(tbody.firstChild)},刪除tbody下的所有子元素。
6.tbody.appendChild(div.firstChild.firstChild),為tbody元素附加div下子元素的子元素,這裡也就是div>table>tr。
二.相關閱讀:
1.createElement()函式可以參閱js createElement()一章節。
2.innerHTML屬性可以參閱js innerHTML一章節。
3.try catch語句可以參閱javascript的try...catch...finally異常處理一章節。
相關文章
- IE9和IE9以下瀏覽器tbody無法使用innerHTML解決方案IE9瀏覽器HTML
- IE9以下瀏覽器的innerHTML忽略空格怎麼辦IE9瀏覽器HTML
- Vue 相容 ie9 的全面解決方案VueIE9
- ie9不顯示flash的解決方法IE9
- 相容ie9以下的polyfill類庫IE9
- 針對IE9瀏覽器的CSS 相容性寫法IE9瀏覽器CSS
- vue解決IE9及以下不顯示placeholder的問題VueIE9
- iview在ie9及以上的相容問題解決方案ViewIE9
- 瀏覽器支援ES6的最優解決方案瀏覽器
- 解決在IE9,IE10瀏覽器下,程式沒有任何錯誤,easy ui頁面不載入任何資料的問題IE9IE10瀏覽器UI
- HTML5支援所有瀏覽器的SHIV解決方案HTML瀏覽器
- chrome瀏覽器最小字號解決方案Chrome瀏覽器
- 如何讓IE8和IE8以下瀏覽器支援HTML5瀏覽器HTML
- [譯] 瀏覽器中 CSS 支援指南瀏覽器CSS
- IE9對CSS3的支援情況概述IE9CSSS3
- angular瀏覽器相容性問題解決方案Angular瀏覽器
- 突破瀏覽器域名併發限制的解決方案瀏覽器
- 瀏覽器同源策略及 Ajax 跨域解決方案瀏覽器跨域
- 實現瀏覽器跨域解決方案介紹瀏覽器跨域
- IE9 平時報錯,F12不報錯IE9
- ie9上支援placeholder屬性的js程式碼IE9JS
- 解決JS彈出新視窗被瀏覽器阻止的解決方案JS瀏覽器
- uc瀏覽器字型放大解決方案瀏覽器
- 主流瀏覽器相容性問題與解決方案瀏覽器
- 瀏覽器相容性問題解決方案 · 總結瀏覽器
- Edge瀏覽器被搜狗瀏覽器篡改的解決方法瀏覽器
- vue填坑之解決部分瀏覽器不支援pushState方法Vue瀏覽器
- win10ie瀏覽器不支援付款怎麼解決_win10ie瀏覽器不支援付款如何修復Win10瀏覽器
- ie瀏覽器打不開網頁怎麼辦 網路正常但是ie瀏覽器打不開解決方法瀏覽器網頁
- IE9對Web標準的支援及新的JavaScript引擎IE9WebJavaScript
- 瀏覽器突然不能訪問某些可用網站解決方案瀏覽器網站
- 最新Iframe全瀏覽器相容自適應高度解決方案瀏覽器
- QTP測試多個瀏覽器視窗的解決方案QT瀏覽器
- 文字框谷歌游標和其他瀏覽器不一致解決方案谷歌瀏覽器
- 谷歌瀏覽器打不開網頁怎麼解決 谷歌瀏覽器電腦上無法開啟網頁解決方法谷歌瀏覽器網頁
- IE9 跨域請求相容IE9跨域
- 彈出IE9的官方介面IE9
- IE9修改收藏夾位置IE9