日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

js ie 6,7,8 使用不了 firstElementChild

發布時間:2025/3/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 js ie 6,7,8 使用不了 firstElementChild 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、

<div><p>123</p> </div>

在上面這段代碼中,如果使用以下js代碼

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

在ie9以下,alert出來的是p(p標簽名字),但是在現代瀏覽器下,比如Chrome,FF,ie11等等,由于會把<div> ? <p>兩個標簽之間的空白節點也解析出來,所以會alert出#text(由于空白節點是屬于text文本節點)

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

<div><p>123</p></div>

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

?

二、

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

<div><p>123</p></div> var first=document.getElementByTagName("div")[0].firstChild

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

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

<div><p>123</p> </div> var first=document.getElementByTagName("div")[0].firstElementChild

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

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

?

三、

雖然firstElementChild方法在ie678中不兼容,但是還有一個方法,便是Children方法。

經測試children方法在所有主流瀏覽器中都兼容,包括ie678,并且它也能實現firstElementChild的功能

<div><p>123</p> </div> var first=document.getElementByTagName("div")[0].children[0]

所以,以后寫js的時候,如果想獲取到子元素的element節點,最好使用children方法,childNodes方法以及firstChild方法在現代瀏覽器中使用,都會把元素標簽中的空白節點檢測出來,一般我們使用這兩個方法都是為了獲取到元素的元素節點,空白節點會給我們造成很多不必要的bug,而children方法則是只檢測element元素節點,防范于未然,所以推薦大家以后使用children方法來替代childNodes。

children

轉載于:https://www.cnblogs.com/yelongsan/p/6509886.html

總結

以上是生活随笔為你收集整理的js ie 6,7,8 使用不了 firstElementChild的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。