天天看點

innerHTML與jquery裡的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能正确顯示了,沒任何問題。

後來查閱資料才知道,原來IE下tbody、tr這些的innerHTML都是隻讀的,不允許寫入,而在其他浏覽器下則沒問題。

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

jquery 如何使用innerHTML

$("#responsediv")

是個Jquery對象,它Val()是對Value屬性指派對它無意義,Jquery沒有innerHTML這個屬性,應該這樣

寫$("#responsediv")[0].innerHTML=msg 就可以獲得這個Dom對象使用innerHTML。

今天在這個基礎上加上了一個後加載廣告的方法:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

<div id=

"logo_m"

></div>

<script>

function

doad(datastr,id){

//getid(id).innerHTML = datastr; 這個是原生js的寫法

$(

"#"

+id).html(datastr);

//這個是jquery寫法

}

/*

上面的都是直接的字元串寫入,不能是js代碼

下面的代碼利用的是jquery的append加載google廣告不錯,百度的好像不能用。後加載百度的可以是用百度管家自帶的函數。

*/

function

doad2(datastr,id){

$(

"#"

+id).append(datastr);

}

var

logo_m=

'<a href="http://www.danhw.com/" target="_blank"><img src="http://files.jb51.net/image/kongbao_370.gif" width=370 height=60 /></a>'

;

doad(logo_m,

'logo_m'

);

</script>

<div id=

"tonglanbd"

></div>

<script type=

"text/javascript"

>

$.getScript(

"http://cbjs.baidu.com/js/m.js"

,

function

() {

BAIDU_CLB_fillSlotAsync(

"廣告id,不能帶u"

,

"tonglanbd"

);

});

</script>