午夜大片爽爽爽免费影院丨色综合色综合久久综合频道88丨日韩人妻无码中文字幕视频丨一本无码久本草在线中文字幕dvd丨国产午夜亚洲精品国产成人

js下firstElementChild firstChild 以及childNodes和children方法

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


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。

主站蜘蛛池模板: 中文区中文字幕免费看| 国产欧美久久久精品影院| 人妻少妇熟女javhd| 亚洲国产精品人人做人人爱| 亚洲色精品vr一区区三区| 99热久久精里都是精品6| 日韩乱码在线观看免费视频网站| 99视频在线精品免费观看6| 亚洲大尺度无码专区尤物| 成人网站免费高清视频在线观看| 丰满白嫩大屁股ass| 亚洲 欧美 综合 在线 精品| 国产免费内射又粗又爽密桃视频| 亚洲人成人伊人成综合网无码 | 亚洲欧美综合成人五月天网站| 在线观看黄a∨免费无毒网站| 久久精品人人做人人爽97| 亚洲综合国产在不卡在线| √8天堂资源地址中文在线| 国产精品久久久久久久久ktv| 99精品国产在热久久无毒不卡| 国产乱码人妻一区二区三区四区| 欧美激情内射喷水高潮| 国产午夜亚洲精品午夜鲁丝片| 亚洲漂亮少妇毛茸茸| 在线播放无码高潮的视频| 日本丰满熟妇videos| 亚洲中文字幕无码中文| 亚洲裸男自慰gv网站| 人妻少妇精品无码专区芭乐视网 | 正在播放国产对白孕妇作爱| 午夜无码伦费影视在线观看果冻 | 在线 国产 有码 亚洲 欧美| 久9视频这里只有精品| 成人欧美一区二区三区1314| 午夜福利国产成人无码gif动图| 中文字幕一精品亚洲无线一区| 国产免费久久精品99reswag| 色窝窝免费播放视频在线| 国产精品∧v在线观看| 性欧美大战久久久久久久 |