IE與FireFox中的childNodes區(qū)別
但是不幸的是,在IE和FireFox中childNodes有點(diǎn)細(xì)微的差別:
<head> <script type="text/javascript">
function view(){
var childs1=$('FirstDiv').childNodes;
var childs2=$('SecondDiv').childNodes;
alert("length of FirstDiv: "+childs1.length+"--length of SecondDiv: "+childs2.length);
}
var $=function(id)
{ return document.getElementById(id); }
</script>
</head>
<html >
<body onload="view();">
<!--第一個(gè)遍歷對(duì)象,節(jié)點(diǎn)之間留有空格和回車-->
<div id="FirstDiv">
<div>1</div>
<div>2</div>
<div>3</div>
</div>
<!--第二個(gè)遍歷對(duì)象,除注釋外,節(jié)點(diǎn)間無空格回車-->
<div id="SecondDiv"><div>first</div><div>second</div><div>third</div></div>
</html>
用IE和Firefox運(yùn)行會(huì)有兩個(gè)不同的結(jié)果:IE的結(jié)果是3:3;而Firefox則是7:3。怎么會(huì)有這種情況呢?
在結(jié)構(gòu)上,對(duì)象1和對(duì)象2不同的是對(duì)象1的子節(jié)點(diǎn)間有回車或者空格,而對(duì)象2則是一行寫到尾。大家都應(yīng)該想到了吧,IE是將一個(gè)完整標(biāo)簽作為一個(gè)節(jié)點(diǎn)。而 Firefox除了上述的的情況外,也把一個(gè)標(biāo)簽的結(jié)束符“>”到下一個(gè)標(biāo)簽的起始符“<”之間的內(nèi)容(除注釋外,包括任何的文字、空格、回車、制表符)也算是一個(gè)節(jié)點(diǎn)了。而且這種節(jié)點(diǎn)也有它們自己獨(dú)特的屬性和值--nodeName="#text"。
在實(shí)際運(yùn)用中,F(xiàn)irefox在遍歷子節(jié)點(diǎn)時(shí),在for循環(huán)里不妨加上:
if(childNode.nodeName=="#text") continue;
或者nodeType == 1。
這樣,便跳過不需要的操作,使程序運(yùn)行的更有效率。
附:
Node.ELEMENT_NODE == 1
Node.ATTRIBUTE_NODE == 2
Node.TEXT_NODE == 3
Node.CDATA_SECTION_NODE == 4
Node.ENTITY_REFERENCE_NODE == 5
Node.ENTITY_NODE == 6
Node.PROCESSING_INSTRUCTION_NODE == 7
Node.COMMENT_NODE == 8
Node.DOCUMENT_NODE == 9
Node.DOCUMENT_TYPE_NODE == 10
Node.DOCUMENT_FRAGMENT_NODE == 11
Node.NOTATION_NODE == 12
var node = document.documentElement.firstChild;
if(node.nodeType != Node.COMMENT_NODE)
alert("You should comment your code well!");
相關(guān)文章
三種動(dòng)態(tài)加載js的jquery實(shí)例代碼另附去除js方法
這篇文章主要介紹了三種動(dòng)態(tài)加載js的jquery實(shí)例代碼另附去除js方法,需要的朋友可以參考下2014-04-04ES6記錄異步函數(shù)的執(zhí)行時(shí)間詳解
在這篇文章里,我會(huì)實(shí)現(xiàn)一個(gè)可重用的函數(shù)來處理 JavaScript 延時(shí)異步操作。有需要的小伙伴們可以參考借鑒,下面來一起看看。2016-08-08BootStrap點(diǎn)擊保存后實(shí)現(xiàn)模態(tài)框自動(dòng)關(guān)閉的思路(模態(tài)框)
這篇文章主要介紹了BootStrap點(diǎn)擊保存后實(shí)現(xiàn)模態(tài)框自動(dòng)關(guān)閉的思路(模態(tài)框),需要的朋友可以參考下2017-09-09微信小程序?qū)崿F(xiàn)側(cè)邊導(dǎo)航欄
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)側(cè)邊導(dǎo)航欄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07理解javascript定時(shí)器中的setTimeout與setInterval
這篇文章主要幫助大家學(xué)習(xí)理解javascript定時(shí)器中的setTimeout與setInterval,從實(shí)例出發(fā)進(jìn)行深入探討,感興趣的小伙伴們可以參考一下2016-02-02JavaScript實(shí)現(xiàn)設(shè)計(jì)模式中的單例模式的一些技巧總結(jié)
單例模式是JavaScript項(xiàng)目中最常用的設(shè)計(jì)模式之一,下面羅列了JavaScript實(shí)現(xiàn)設(shè)計(jì)模式中的單例模式的一些技巧總結(jié),包括惰性加載與分支技術(shù)等,需要的朋友可以參考下.2016-05-05JS實(shí)現(xiàn)兼容各種瀏覽器的獲取選擇文本的方法【測(cè)試可用】
這篇文章主要介紹了JS實(shí)現(xiàn)兼容各種瀏覽器的獲取選擇文本的方法,可實(shí)現(xiàn)鼠標(biāo)拖動(dòng)選擇文本的同時(shí),下方顯示區(qū)同步實(shí)時(shí)顯示選中內(nèi)容的功能,涉及javascript響應(yīng)鼠標(biāo)事件及頁(yè)面元素動(dòng)態(tài)操作技巧,需要的朋友可以參考下2016-06-06