JS--DOM拓展

關(guān)于DOM的內(nèi)容實(shí)在是太豐富了,前面我們簡單的介紹了DOM中關(guān)于DOM特性和內(nèi)容還有DOM節(jié)點(diǎn)相關(guān)的知識點(diǎn)碘勉。其實(shí)主要的就是關(guān)于DOM1級的主要概念:其將HTML或XML形象的看成是一個(gè)層次化的節(jié)點(diǎn)樹,可以通過JavaScript操作這個(gè)節(jié)點(diǎn)樹笑陈,進(jìn)而改變其外觀和結(jié)構(gòu)甩恼。接下來進(jìn)一步拓展一下DOM相關(guān)的內(nèi)容。

一拴疤、選擇符拓展

以下的方法可以通過Document和Element類型的實(shí)例調(diào)用他們。

(1)document.querySelector()独泞,level1呐矾,該方法接受一個(gè)CSS選擇符,返回該模式匹配的第一個(gè)元素懦砂。如果沒有則返回null蜒犯。如果傳入不被支持的CSS選擇符則會報(bào)錯(cuò)。

(2)document.querySelectorAll()荞膘,level1罚随,該方法和上面方法接受的參數(shù)是一樣的,但是返回的不僅是一個(gè)元素羽资,返回的是一個(gè)NodeList實(shí)例淘菩。具體來說,返回的值是帶有所有屬性和方法的NodeList屠升。返回的僅僅是NodeList的快照潮改,并不是動(dòng)態(tài)查詢的,這樣避免了常見的性能問題腹暖。

(3)matchesSelector()汇在,level2,該方法是level2級別的方法脏答,是為Element類型新增的一個(gè)方法糕殉。這個(gè)方法接受一個(gè)參數(shù)(CSS選擇符),如果調(diào)用元素和該選擇符匹配則返回TRUE殖告,否則返回FALSE阿蝶。注意,該方法在很多瀏覽器上并未實(shí)現(xiàn)黄绩,注意使用羡洁。

二、元素遍歷拓展

之前關(guān)于獲得某個(gè)元素的子節(jié)點(diǎn)提供了一些方法宝与,例如firstChild焚廊,lastChild,childNodes习劫。關(guān)于節(jié)點(diǎn)之間的空格在IE9之前是不會當(dāng)做文本節(jié)點(diǎn)返回的咆瘟,但是在其他的瀏覽器中會當(dāng)做一個(gè)文本節(jié)點(diǎn)返回。這樣就導(dǎo)致了一些兼容性問題诽里。接下來提供了一些新的方法可以使用袒餐,這樣可以避免空白文本節(jié)點(diǎn):

(1)childElementCount,返回子元素的個(gè)數(shù)谤狡,不包括文本節(jié)點(diǎn)和注釋節(jié)點(diǎn)灸眼。

(2)firstElementChild,指向的是第一個(gè)子元素墓懂,是firstChild的元素版焰宣。

(3)lastElementChild,指向的是最后一個(gè)子元素捕仔,是lastChild的元素版匕积。

(4)previousElementSibiling,指向前一個(gè)同輩元素榜跌,是previousSibling的元素版闪唆。

(5)nextElementSibling,指向是下一個(gè)同輩元素钓葫,是nextSibling的元素版悄蕾。

三、HTML5關(guān)于DOM的拓展

(1)getElementsByClassName()础浮,該方法可以通過所有的HTML元素或者document對象進(jìn)行調(diào)用帆调。該方法接受一個(gè)參數(shù),即一個(gè)包含一個(gè)或者多個(gè)類名的字符串豆同,返回帶有指定類的所有NodeList贷帮,傳入多個(gè)類時(shí),順序不重要诱告。

(2)classList屬性撵枢,所有元素都具有這個(gè)屬性,這個(gè)也是一個(gè)類數(shù)組精居,具有l(wèi)ength屬性可以通過item()方法進(jìn)行訪問锄禽。此外該屬性還有以下方法:(支持該屬性的瀏覽器貌似有FF3.6和chrome)

add(value) :將給定的value添加到列表中,如果存在則不添加靴姿。

contains(value):表示列表中是否存在value沃但,如果存在則返回TRUE,否則返回FALSE佛吓。

remove(value):從列表中刪除給定的value 宵晚。

toggle(value): 如果列表中有value則刪除垂攘,如果沒有的話則添加。

------華麗的分割線-------

四淤刃、焦點(diǎn)管理

(1)document.activeElement屬性晒他,這個(gè)屬性始終會引用DOM中當(dāng)前獲得了焦點(diǎn)的元素。默認(rèn)情況下逸贾,當(dāng)文檔加載完畢后陨仅,該屬性中保存的是document.body元素。在加載期間其值為null铝侵。

(2)document.hasFocus()方法灼伤,該方法用來確定文檔或者元素是否獲得了焦點(diǎn)。通過這個(gè)方法可以判斷用戶是否正在和頁面進(jìn)行交互操作咪鲜。

五狐赡、HTMLDocument新變化

(1)document.readyState屬性:該屬性可以用來判斷文檔是否加載完成,其有兩個(gè)值疟丙。第一猾警,loading表示正在加載文檔。第二隆敢,complete表示已經(jīng)加載完成文檔发皿。

(2)document.compatMode屬性:可以用來檢測頁面的模式是標(biāo)準(zhǔn)模式還是混雜模式,在標(biāo)準(zhǔn)模式下該屬性的值為'CSS1Compat'拂蝎,在混雜模式下該屬性的值為'BackCompat'穴墅。

(3)document.head屬性:該屬性是對文檔中<head>元素的引用。因?yàn)閷?shí)現(xiàn)的瀏覽器并不多可以通過兼容寫法:document.head || document.getElementsByTagName('head')[0]温自。

六玄货、自定義數(shù)據(jù)的屬性

我們知道在HTML5中可以為元素添加自定義屬性,其格式為data-name的格式悼泌,name是自己進(jìn)行命名的松捉。

(1)element.dataset屬性:我們可以通過元素獲得dataset屬性,該屬性包括的是自定義屬性的一個(gè)鍵值對馆里,是一個(gè)DOMStringMap的實(shí)例隘世。例如:

var box = document.getElementById('id');

var appid = box.dataset.appid;//取得屬性為data-appid的值

box.dataset.appid = 12345; //設(shè)置自定義屬性data-appid的值。

七鸠踪、專有擴(kuò)展

(1)文檔模式:在IE8中引入這個(gè)概念表示頁面可以用什么級別的CSS丙者,可以用JavaScript的哪些API。要強(qiáng)制瀏覽器已某種模式進(jìn)行渲染营密,可以使用HTTP頭部信息X-UA-Compatible或者通過等價(jià)的meta頭部進(jìn)行設(shè)置械媒。

(2)children屬性:之前關(guān)于處理文本節(jié)點(diǎn)中的空白有差異,這里出現(xiàn)了children屬性,這個(gè)屬性也是HTMLCollection的實(shí)例纷捞。只包含元素中同樣還是元素的節(jié)點(diǎn)痢虹。

(3)contains()方法:該方法可以判斷某個(gè)節(jié)點(diǎn)是不是另一個(gè)節(jié)點(diǎn)的后代。IE是第一個(gè)引入該方法的主儡。調(diào)用該方法的應(yīng)該是祖先節(jié)點(diǎn)奖唯。接受的參數(shù)是檢測的后代節(jié)點(diǎn)。如果檢測到了返回TRUE否則返回FALSE缀辩。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市踪央,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖咐蚯,帶你破解...
    沈念sama閱讀 212,029評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件旬迹,死亡現(xiàn)場離奇詭異,居然都是意外死亡液斜,警方通過查閱死者的電腦和手機(jī)累贤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來少漆,“玉大人臼膏,你說我怎么就攤上這事∈舅穑” “怎么了渗磅?”我有些...
    開封第一講書人閱讀 157,570評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長检访。 經(jīng)常有香客問我始鱼,道長,這世上最難降的妖魔是什么脆贵? 我笑而不...
    開封第一講書人閱讀 56,535評論 1 284
  • 正文 為了忘掉前任医清,我火速辦了婚禮,結(jié)果婚禮上卖氨,老公的妹妹穿的比我還像新娘会烙。我一直安慰自己,他們只是感情好筒捺,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,650評論 6 386
  • 文/花漫 我一把揭開白布持搜。 她就那樣靜靜地躺著,像睡著了一般焙矛。 火紅的嫁衣襯著肌膚如雪葫盼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,850評論 1 290
  • 那天村斟,我揣著相機(jī)與錄音贫导,去河邊找鬼抛猫。 笑死,一個(gè)胖子當(dāng)著我的面吹牛孩灯,可吹牛的內(nèi)容都是我干的闺金。 我是一名探鬼主播,決...
    沈念sama閱讀 39,006評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼峰档,長吁一口氣:“原來是場噩夢啊……” “哼败匹!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起讥巡,我...
    開封第一講書人閱讀 37,747評論 0 268
  • 序言:老撾萬榮一對情侶失蹤掀亩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后欢顷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體槽棍,經(jīng)...
    沈念sama閱讀 44,207評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,536評論 2 327
  • 正文 我和宋清朗相戀三年抬驴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了炼七。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,683評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡布持,死狀恐怖豌拙,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情题暖,我是刑警寧澤姆蘸,帶...
    沈念sama閱讀 34,342評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站芙委,受9級特大地震影響逞敷,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜灌侣,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,964評論 3 315
  • 文/蒙蒙 一推捐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧侧啼,春花似錦牛柒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至哪审,卻和暖如春蛾魄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評論 1 266
  • 我被黑心中介騙來泰國打工滴须, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留舌狗,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,401評論 2 360
  • 正文 我出身青樓扔水,卻偏偏與公主長得像痛侍,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子魔市,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,566評論 2 349

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