js之原生節(jié)點(diǎn)操作

鏈接地址:http://blog.csdn.net/hj7jay/article/details/53389522
http://blog.csdn.net/terrychinaz/article/details/8492092
1、節(jié)點(diǎn)查找API節(jié)點(diǎn):
Node是一個(gè)接口,中文叫節(jié)點(diǎn)莽鸿,很多類(lèi)型的DOM元素都是繼承于它,都共享著相同的基本屬性和方法查乒。常見(jiàn)的Node有 element,text郁竟,attribute玛迄,comment(注釋節(jié)點(diǎn)),document 等棚亩。
{
ELEMENT_NODE: 1, // 元素節(jié)點(diǎn)
ATTRIBUTE_NODE: 2, // 屬性節(jié)點(diǎn)
TEXT_NODE: 3, // 文本節(jié)點(diǎn)
COMMENT_NODE: 8, // 注釋節(jié)點(diǎn)
DOCUMENT_NODE: 9, // 文檔
DOCUMENT_TYPE_NODE: 10,
DOCUMENT_FRAGMENT_NODE: 11, // 文檔碎片
}
通常情況下蓖议,只需要了解上面的幾個(gè)就行了虏杰。
2、節(jié)點(diǎn)查找API
document.getElementById :根據(jù)ID查找元素勒虾,大小寫(xiě)敏感纺阔,如果有多個(gè)結(jié)果,只返回第一個(gè)修然;

document.getElementsByClassName :根據(jù)類(lèi)名查找元素笛钝,多個(gè)類(lèi)名用空格分隔,返回一個(gè) HTMLCollection 愕宋。注意兼容性為IE9+(含)玻靡。另外,不僅僅是document中贝,其它元素也支持 getElementsByClassName 方法囤捻;

document.getElementsByTagName :根據(jù)標(biāo)簽查找元素, * 表示查詢(xún)所有標(biāo)簽邻寿,返回一個(gè) HTMLCollection 最蕾。

document.getElementsByName :根據(jù)元素的name屬性查找,返回一個(gè) NodeList

document.querySelector :返回單個(gè)Node老厌,IE8+(含),如果匹配到多個(gè)結(jié)果黎炉,只返回第一個(gè)枝秤。

document.querySelectorAll :返回一個(gè) NodeList ,IE8+(含)慷嗜。

document.forms :獲取當(dāng)前頁(yè)面所有form淀弹,返回一個(gè) HTMLCollection ;
這里順便提一下:querySelector與getElement之類(lèi)的區(qū)別:
寫(xiě)法不同庆械,最大的區(qū)別就是getElement
之類(lèi)的只能接受的參數(shù)是id薇溃,class,name之類(lèi)的缭乘,而querySelector接受的參數(shù)則擴(kuò)展到了css的選擇器【必須嚴(yán)格按照css選擇器寫(xiě)法來(lái)寫(xiě)沐序,不然拋出異常】堕绩,可以用任意的選擇器來(lái)描述選擇的東東策幼。getElement***返回值是一個(gè) Live Node List(動(dòng)態(tài)),querySelector返回的是 Static Node List(靜態(tài))奴紧。
什么是NodeList呢特姐?
<pre>NodeList 本質(zhì)上是一個(gè)動(dòng)態(tài)的 Node 集合,只是規(guī)范中對(duì) querySelectorAll 有明確要求黍氮,規(guī)定其必須返回一個(gè)靜態(tài)的 NodeList 對(duì)象唐含。</pre>
看下面:
html:
<p class="lost">1</p>
<p class="lost">2</p>
js:
var query2 = document.querySelectorAll('.lost');
var query3 = document.getElementsByClassName("lost");
console.log(query2);//打印出的原型是NodeList
console.log(query3);//HTMLCollection

返回的是NodeList /HTMLCollection浅浮?
實(shí)際上,HTMLCollection 和 NodeList 十分相似捷枯,都是一個(gè)動(dòng)態(tài)的元素集合滚秩,每次訪(fǎng)問(wèn)都需要重新對(duì)文檔進(jìn)行查詢(xún)。兩者的本質(zhì)上差別在于铜靶,HTMLCollection 是屬于 Document Object Model HTML 規(guī)范叔遂,而 NodeList 屬于 Document Object Model Core 規(guī)范。
這里又有個(gè)問(wèn)題:NodeList 和HTMLCollection 的區(qū)別是什么呢争剿?
HTMLCollection是元素集合已艰,而NodeList是節(jié)點(diǎn)集合(既可以包含元素,也可以包含文本節(jié)點(diǎn))蚕苇。所以 node.childNodes 返回 NodeList哩掺,而 node.children 和 node.getElementsByXXX 返回 HTMLCollection 。children是Element的屬性涩笤,只返回的是html節(jié)點(diǎn)嚼吞。childNodes是Node的屬性,返回的是制定元素的所有的子元素集合的節(jié)點(diǎn)蹬碧,包括html節(jié)點(diǎn)舱禽,文本節(jié)點(diǎn),屬性節(jié)點(diǎn)恩沽,注釋節(jié)點(diǎn)等等誊稚。
例子:
html:
<ul>
<li>1</li>
<li>1</li>
<li>1</li>
<li>1</li>
</ul>
js:
var ul = document.getElementsByTagName('ul')[0];
var lis1 = ul.childNodes,//NodeList
lis2 = ul.children;//htmlcollection
console.log(lis1.toString(), lis1.length); // "[object NodeList]" 9
console.log(lis2.toString(), lis2.length);//[object HTMLCollection] 4
上面的nodelist節(jié)點(diǎn)把換行也當(dāng)作了一個(gè)個(gè)的空白文本節(jié)點(diǎn)了,所以返回的是9罗心,而htmlcollection卻不會(huì)里伯。querySelectorAll 的返回值是一個(gè)靜態(tài)的 NodeList 對(duì)象,而 getElementsBy ***系列的返回值實(shí)際上是一個(gè) HTMLCollection 對(duì)象 渤闷。
<pre>
如果作為NodeList返回疾瓮,以下情況將會(huì)被當(dāng)作文本節(jié)點(diǎn)處理:

  1. 一個(gè)<div>和注釋間的斷行和空格(或tab)作為text node(沒(méi)錯(cuò),標(biāo)簽之間的空白符號(hào)也可以被解析為text node)
  2. 注釋作為comment node
  3. 注釋和<p>之間的斷行和空格(或tab)作為text node
  4. p作為element
  5. </p>和</div>之間的斷行和空格(或tab)作為text node
    </pre>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末飒箭,一起剝皮案震驚了整個(gè)濱河市狼电,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌弦蹂,老刑警劉巖漫萄,帶你破解...
    沈念sama閱讀 221,820評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異盈匾,居然都是意外死亡腾务,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)削饵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)岩瘦,“玉大人未巫,你說(shuō)我怎么就攤上這事∑裘粒” “怎么了叙凡?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,324評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)密末。 經(jīng)常有香客問(wèn)我握爷,道長(zhǎng),這世上最難降的妖魔是什么严里? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,714評(píng)論 1 297
  • 正文 為了忘掉前任新啼,我火速辦了婚禮,結(jié)果婚禮上刹碾,老公的妹妹穿的比我還像新娘燥撞。我一直安慰自己,他們只是感情好迷帜,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布物舒。 她就那樣靜靜地躺著,像睡著了一般戏锹。 火紅的嫁衣襯著肌膚如雪冠胯。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,328評(píng)論 1 310
  • 那天锦针,我揣著相機(jī)與錄音涵叮,去河邊找鬼。 笑死伞插,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的盾碗。 我是一名探鬼主播媚污,決...
    沈念sama閱讀 40,897評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼廷雅!你這毒婦竟也來(lái)了耗美?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,804評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤航缀,失蹤者是張志新(化名)和其女友劉穎商架,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體芥玉,經(jīng)...
    沈念sama閱讀 46,345評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蛇摸,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了灿巧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赶袄。...
    茶點(diǎn)故事閱讀 40,561評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡揽涮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出饿肺,到底是詐尸還是另有隱情蒋困,我是刑警寧澤,帶...
    沈念sama閱讀 36,238評(píng)論 5 350
  • 正文 年R本政府宣布敬辣,位于F島的核電站雪标,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏溉跃。R本人自食惡果不足惜村刨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望喊积。 院中可真熱鬧烹困,春花似錦、人聲如沸乾吻。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,417評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)绎签。三九已至枯饿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間诡必,已是汗流浹背奢方。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,528評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留爸舒,地道東北人蟋字。 一個(gè)月前我還...
    沈念sama閱讀 48,983評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像扭勉,于是被迫代替她去往敵國(guó)和親鹊奖。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容