九九热线视频精品99-动漫高h纯肉无码视频在线观看-午夜理论无码片在线观看免费-99精品国产在热久久无码-亚洲国产成人乱码

js下firstElementChild firstChild 以及childNodes和children方法

2020/11/25 17:50:10   閱讀:4314    發布者:4314


123




var oDiv=document.getElementByTagName("div")[0];
alert(oDiv.firstChild.nodeName)

在ie9以下,alert出來的是p(p標簽名字),但是在現代瀏覽器下,比如Chrome,FF,ie11等等,由于會把

兩個標簽之間的空白節點也解析出來,所以會alert出#text(由于空白節點是屬于text文本節點)

如果把html的Demo改成如下,則無論在古老瀏覽器還是現代瀏覽器中得到的結果都是一樣

123



由于沒有了div與p標簽之間的空白,所以執行上面js代碼時無論在ie678還是現代瀏覽器中都輸出p標簽

在平時寫js中,我們經常會想用一個方法直接獲取到父元素的第一個子元素節點,就好比如上面的例子中,使用firstChild確實可以實現這一功能

123


var first=document.getElementByTagName("div")[0].firstChild

這樣我們就可以獲取到第一個元素子節點,但是當div與p之間存在空白節點的話,first就會獲取到空白節點而不是第一個元素節點。

所以,DOM擴展了一個firstElementChild方法,這個方法可以獲取到父元素的第一個子元素節點

123




var first=document.getElementByTagName("div")[0].firstElementChild

即便div與p標簽中存在空白節點,但是使用firstElementChild方法仍然可以正常的獲取到div的第一個子元素節點p。

但是問題又來了,firstElementChild這個方法在現代瀏覽器中兼容,但是在ie678中卻沒有這個方法,一旦在ie678中使用這個方法就會出錯。
雖然firstElementChild方法在ie678中不兼容,但是還有一個方法,便是Children方法。

經測試children方法在所有主流瀏覽器中都兼容,包括ie678,并且它也能實現firstElementChild的功能
var first=document.getElementByTagName("div")[0].children[0]
所以,以后寫js的時候,如果想獲取到子元素的element節點,最好使用children方法,childNodes方法以及firstChild方法在現代瀏覽器中使用,都會把元素標簽中的空白節點檢測出來,一般我們使用這兩個方法都是為了獲取到元素的元素節點,空白節點會給我們造成很多不必要的bug,而children方法則是只檢測element元素節點,防范于未然,所以推薦大家以后使用children方法來替代childNodes。

主站蜘蛛池模板: 深夜国产成人福利在线观看| 在线观看无码不卡av中文| 亚洲精品无码不卡在线播he| 久久综合亚洲鲁鲁五月天| 国产成人免费无码视频在线观看 | 视频区国产亚洲.欧美| 99偷拍视频精品一区二区| a∨在线视频播放| 国产精品欧美久久久久无广告| 亚洲精品无码伊人久久| 亚洲一区二区三区高清av| 丁香五月亚洲综合深深爱| 特黄特黄欧美亚高清二区片| 免费视频无遮挡在线观看| 国产拍揄自揄精品视频| 奇米影视7777狠狠狠狠色| 伊人蕉久中文字幕无码专区| 亚洲精品一区二区久| 成人看片黄a免费看| 欧美日韩一区二区综合| 国产无套抽出白浆来| 亚洲人成网7777777国产| 20女人牲交片20分钟| 日日碰狠狠添天天爽五月婷| 日日摸天天爽天天爽视频| 婷婷网色偷偷亚洲男人甘肃| 国产又粗又硬又大爽黄老大爷| 无码av喷白浆在线播放| 日本免费一区二区三区最新vr| 精品人妻系列无码人妻不卡| 十八岁以下禁止观看黄下载链接 | 亚洲人成伊人成综合网中文| 国产精品久久久久久久久久妞妞| 午夜精品久久久内射近拍高清| 亚洲欧美精品水蜜桃| 瑜伽裤国产一区二区三区| 亚洲精品无码国产片| 亚洲粉嫩高潮的18p| 国产精成人品一区| 潮喷失禁大喷水av无码| 天天做天天爱夜夜爽|