第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

HTMLCollection,NodeLists和對(duì)象數(shù)組之間的區(qū)別

HTMLCollection,NodeLists和對(duì)象數(shù)組之間的區(qū)別

HTMLCollection,NodeLists和對(duì)象數(shù)組之間的區(qū)別在DOM方面,我一直對(duì)HTMLCollections,對(duì)象和數(shù)組感到困惑。例如...document.getElementsByTagName("td")和之間有什么區(qū)別$("td")?$("#myTable")并且$("td")是對(duì)象(jQuery對(duì)象)。為什么console.log還會(huì)在它們旁邊顯示DOM元素?cái)?shù)組,它們不是對(duì)象而不是數(shù)組?什么是難以捉摸的“NodeLists”,我如何選擇一個(gè)?還請(qǐng)?zhí)峁┮韵履_本的任何解釋。謝謝[123,"abc",321,"cba"]=[123,"abc",321,"cba"]{123:123,abc:"abc",321:321,cba:"cba"}=Object { 123=123, abc="abc", 321=321, more...}Node= Node { ELEMENT_NODE=1, ATTRIBUTE_NODE=2, TEXT_NODE=3, more...}document.links= HTMLCollection[a #, a #]document.getElementById("myTable")= <table id="myTable">document.getElementsByClassName("myRow")= HTMLCollection[tr.myRow, tr.myRow]document.getElementsByTagName("td")= HTMLCollection[td, td, td, td]$("#myTable")= Object[table#myTable]$("td")= Object[td, td, td, td]<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">     <head>         <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />         <title>Collections?</title>          <script src="http://code.jquery.com/jquery-latest.js" type="text/javascript"></script>         <script type="text/javascript">            $(function(){                console.log('[123,"abc",321,"cba"]=',[123,"abc",321,"cba"]);                console.log('{123:123,abc:"abc",321:321,cba:"cba"}=',{123:123,abc:"abc",321:321,cba:"cba"});                console.log('Node=',Node);                console.log('document.links=',document.links);                console.log('document.getElementById("myTable")=',document.getElementById("myTable"));                console.log('document.getElementsByClassName("myRow")=',document.getElementsByClassName("myRow"))                console.log('document.getElementsByTagName("td")=',document.getElementsByTagName("td"));                console.log('$("#myTable")=',$("#myTable"));                console.log('$("td")=',$("td"));            });        </script>    </head>
查看完整描述

3 回答

?
德瑪西亞99

TA貢獻(xiàn)1770條經(jīng)驗(yàn) 獲得超3個(gè)贊

首先,我將解釋之間的差異NodeList和HTMLCollection。


兩個(gè)接口是集合 DOM節(jié)點(diǎn)。它們?cè)谔峁┑姆椒ê退鼈兛梢园墓?jié)點(diǎn)類型方面有所不同。雖然a NodeList可以包含任何節(jié)點(diǎn)類型,但是HTMLCollection應(yīng)該只包含Element節(jié)點(diǎn)。

An HTMLCollection提供與a NodeList和另外一種方法相同的方法namedItem。


當(dāng)必須向多個(gè)節(jié)點(diǎn)提供訪問(wèn)時(shí)總是使用集合,例如,大多數(shù)選擇器方法(例如getElementsByTagName)返回多個(gè)節(jié)點(diǎn)或獲取對(duì)所有子節(jié)點(diǎn)的引用(element.childNodes)。


有關(guān)更多信息,請(qǐng)查看DOM4規(guī)范 - 集合。


document.getElementsByTagName("td")和之間有什么區(qū)別$("td")?


getElementsByTagName是DOM接口的方法。它接受標(biāo)記名稱作為輸入并返回HTMLCollection(參見(jiàn)DOM4規(guī)范)。


$("td")大概是jQuery。它接受任何有效的CSS / jQuery選擇器并返回一個(gè)jQuery對(duì)象。


標(biāo)準(zhǔn)DOM集合和jQuery選擇之間的最大區(qū)別在于DOM集合通常是實(shí)時(shí)的(并非所有方法都返回實(shí)時(shí)集合),即如果受到影響,對(duì)DOM的任何更改都會(huì)反映在集合中。它們就像DOM樹(shù)上的視圖,而jQuery選擇是調(diào)用函數(shù)時(shí)DOM樹(shù)的快照。


為什么console.log還會(huì)在它們旁邊顯示DOM元素?cái)?shù)組,它們不是對(duì)象而不是數(shù)組?


jQuery對(duì)象是類似于數(shù)組的對(duì)象,即它們具有數(shù)字屬性和length屬性(請(qǐng)記住,數(shù)組本身就是對(duì)象)。瀏覽器傾向于以特殊方式顯示數(shù)組和類似數(shù)組的對(duì)象,例如[ ... , ... , ... ]。


什么是難以捉摸的“NodeLists”,我如何選擇一個(gè)?


請(qǐng)參閱我的答案的第一部分。你不能選擇 NodeList s,它們是選擇的結(jié)果。


據(jù)我所知,甚至沒(méi)有一種以NodeList編程方式創(chuàng)建s 的方法(即創(chuàng)建一個(gè)空的并稍后添加節(jié)點(diǎn)),它們僅由一些DOM方法/屬性返回。


查看完整回答
反對(duì) 回復(fù) 2019-08-30
?
手掌心

TA貢獻(xiàn)1942條經(jīng)驗(yàn) 獲得超3個(gè)贊

0. a和a有什么區(qū)別?HTMLCollectionNodeList

以下是一些定義。


DOM Level 1 Spec - 其他對(duì)象定義:


接口HTMLCollection


HTMLCollection是節(jié)點(diǎn)列表??梢酝ㄟ^(guò)序數(shù)索引或節(jié)點(diǎn)的名稱或id屬性來(lái)訪問(wèn)單個(gè)節(jié)點(diǎn)。注意:HTML DOM中的集合被假定為實(shí)時(shí),這意味著它們會(huì)在更改基礎(chǔ)文檔時(shí)自動(dòng)更新。


DOM Level 3 Spec - NodeList


接口NodeList


NodeList接口提供有序節(jié)點(diǎn)集合的抽象,而不定義或約束此集合的實(shí)現(xiàn)方式。DOM中的NodeList對(duì)象是實(shí)時(shí)的。


NodeList中的項(xiàng)可通過(guò)整數(shù)索引訪問(wèn),從0開(kāi)始。


因此,它們都可以包含實(shí)時(shí)數(shù)據(jù),這意味著DOM將在其值發(fā)生時(shí)更新。它們還包含一組不同的功能。


如果您運(yùn)行腳本,tableDOM元素包含a childNodes NodeList[2]和a,您將注意到是否檢查控制臺(tái)children HTMLCollection[1]。他們?yōu)槭裁床煌??因?yàn)镠TMLCollection只能包含元素節(jié)點(diǎn),所以NodeList還包含一個(gè)文本節(jié)點(diǎn)。


在此輸入圖像描述


1. document.getElementsByTagName("td")和之間有什么區(qū)別$("td")?

document.getElementsByTagName("td")返回DOM元件的陣列(一NodeList),$("td")被稱為jQuery對(duì)象,其具有從所述元件document.getElementsByTagName("td")上其屬性0,1,2等,主要的區(qū)別是,jQuery對(duì)象是慢一點(diǎn)來(lái)檢索,但可訪問(wèn)所有的方便jQuery函數(shù)。


2. $("#myTable")和$("td")是對(duì)象(jQuery對(duì)象)。為什么console.log還在它們旁邊顯示DOM元素?cái)?shù)組,它們不是對(duì)象而不是數(shù)組?

他們對(duì)自己的屬性的對(duì)象0,1,2等設(shè)置為DOM元素。這是一個(gè)簡(jiǎn)單的例子:它是如何工作的:


的jsfiddle


    var a = {

        1: "first",

        2: "second"

    }

    alert(a[1]);

3.什么是難以捉摸的“NodeLists”,我該如何選擇?

您一直在代碼中檢索它們,getElementsByClassName并getElementsByTagName返回NodeLists


查看完整回答
反對(duì) 回復(fù) 2019-08-30
?
森林海

TA貢獻(xiàn)2011條經(jīng)驗(yàn) 獲得超2個(gè)贊

附加說(shuō)明

HTMLCollection和NodeList有什么區(qū)別?

一的HTMLCollection只包含元素節(jié)點(diǎn)(標(biāo)簽)和節(jié)點(diǎn)列表包含了所有的節(jié)點(diǎn)。


有四種節(jié)點(diǎn)類型:


元素節(jié)點(diǎn)

屬性節(jié)點(diǎn)

文本節(jié)點(diǎn)

評(píng)論節(jié)點(diǎn)

nodeTypes


元素內(nèi)的空格被視為文本,文本被視為節(jié)點(diǎn)。


考慮以下:


<ul id="myList">

  <!-- List items -->

  <li>List item 1</li> 

  <li>List item 2</li>

  <li>List item 3</li>

  <li>List item 4</li>

  <li>List item 5</li>

</ul>

空白: <ul id="myList">   <li>List item</li></ul>


沒(méi)有空格: <ul id="myList"><li>List item</li></ul>


查看完整回答
反對(duì) 回復(fù) 2019-08-30
  • 3 回答
  • 0 關(guān)注
  • 847 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)