亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

innerHTML與jquery里html()有哪些區別

發布時間:2020-12-19 09:25:57 來源:億速云 閱讀:382 作者:小新 欄目:web開發

小編給大家分享一下innerHTML與jquery里html()有哪些區別,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

區別:1、html()可以設置tbody、tr這些只讀標簽,而innerHTML在低版本IE下不行,不可以賦值,賦值的話就腳本報錯;2、html()設置的script腳本會執行,innerHTML設置的script腳本不會執行。

InnerHtml() 與html( )的區別

1、html()可以設置tbody、tr這些只讀標簽,而innerHTML在低版本IE下不行

在一個 HTML 文檔中, 我們可以使用 .html() 方法來獲取任意一個元素的內容。 如果選擇器匹配多于一個的元素,那么只有第一個匹配元素的 HTML 內容會被獲取。

innerHTML 是從對象的起始位置到終止位置的全部內容,包括Html標簽

我原本一直以為innerHTML和jquery里的html其實是完全一樣的,jquery是多此一舉了,直到我遇到一次問題

看個示例:

var tbody=document.createElement('tbody');
tbody.innerHTML='<tr><td>IE下tbody的innerHTML是只讀的</td></tr>'; //在IE下報錯,目標對象錯誤

現在用jquery的html試試,

$(tbody).html('<tr><td>IE下tbody的innerHTML是只讀的</td></tr>');

發現IE下用jquery能正確顯示了,沒任何問題。

后來查閱資料才知道:

jQuery的html()做了些容錯處理,原生的Dom API innerHTML有些元素是不支持的,比如table tr等元素,IE下tbody、tr這些的innerHTML都是只讀的,不允許寫入,而在其他瀏覽器下則沒問題。

jquery里是用了try,catch來檢測,如果報錯則在catch里重新調用this.empty().append(value),是通過append來添加字符串的。

而IE里有些元素的innerHTML是只讀的:

在IE6,IE7,IE8,IE9里面 col, colGroup, frameSet, html, head, style,table, tBody, tFoot, tHead, title, tr 這幾個的innerHTML屬性是只讀的,不可以賦值,賦值的話就腳本報錯。IE10這些標簽的innerHTML改成可寫的了。

既然在IE6-IE9里這些標簽的innerHTML屬性是只讀的,那么我們盡量避免對這些標簽的innerHTML屬性賦值,比如說對table的innerHTML可以改為對table父元素(假設是p)的innerHTML屬性賦值。

2、html()設置的script腳本會執行,innerHTML設置的script腳本不會執行。

因為jQuery 會把強行讓參數字符串中的script 標簽生效(方式是create and replace),而.innerHTML賦值則不會。

$('#app').html('<script>alert(1)</script>')  // 會彈出警告框
$('#app')[0].innerHTML = '<script>alert(1)</script>' // 不會彈出警告框
      // ↑使用[0]將jquery對象轉為dom對象,只有dom對象才有innerHTML方法,jQuery沒有。

擴展資料:

html()函數的優點

看看innerHTML屬性的缺點,就知道jQuery中html()函數的優點了,它是兼容所有瀏覽的,不存在html5標簽不支持的問題,不存在href,src屬性被轉換的問題,不存在某些標簽設置不了html串的問題,總之就是一句話,用它基本就萬事無憂了,至少功能的實現上是這樣。

html()函數的缺點

看來jQuery的html()函數似乎完美無限了,其實不然,它的完美只表現它的功能上,它兼容了所有瀏覽器,包括IE。但偏偏也是IE,盡管兼容了,性能并不樂觀,如果使用html()函數設置大數據量的html串的話,那將是場災難。

在IE下,html()函數的性能到底低到什么程度?電腦的配置為"i5 四核,8G內存,IE9",測試了用html()函數設置2000行4列的table,其平均耗時達到27秒!具體什么原因導致html()在IE下這么慢,個人粗略看過源碼,覺得使用try方式是主要原因之一,有興趣的同學可以深入研究一下。

以上是“innerHTML與jquery里html()有哪些區別”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

屯留县| 成武县| 固阳县| 许昌县| 潜山县| 天门市| 赣州市| 陈巴尔虎旗| 蒙自县| 临颍县| 丹寨县| 扬中市| 冷水江市| 尚义县| 孟州市| 镇雄县| 博野县| 丰县| 宁德市| 濮阳市| 武冈市| 栾川县| 吉首市| 肥城市| 绍兴市| 芦溪县| 山西省| 张家口市| 乌什县| 江孜县| 五华县| 遂溪县| 东宁县| 琼结县| 栾川县| 延边| 广元市| 辽宁省| 陇西县| 乌拉特中旗| 贵州省|