js

DOM

選取文檔元素

  • 用指定的id屬性
    • getElementById(id)
    • 返回element對(duì)象
  • 用指定的name屬性
    • getElementByName(name)
    • 返回NodeList對(duì)象
  • 用指定的標(biāo)簽名字
    • getElementByTagName(tag_name)
    • 返回NodeList對(duì)象
  • 用指定的CSS類
    • getElementByClassName(class)
    • 返回NodeList對(duì)象
  • 匹配指定的CSS選擇器
    • queueSelectorAll()
    • 返回NodeList對(duì)象

NodeList對(duì)象不是歷史文檔狀態(tài)的一個(gè)靜態(tài)快照,而通常是實(shí)時(shí)的,并且當(dāng)文檔變化時(shí)它們所包含的元素列表能隨之改變,這是其中一個(gè)最重要和令人驚訝的特性。

但是通過(guò)queueSelectorAll() 返回的NodeList對(duì)象并不是實(shí)時(shí)的。它包含在調(diào)用時(shí)刻選擇器所匹配的元素,但它并不更新后續(xù)文檔的變化。

文檔結(jié)構(gòu)與遍歷

parentNode

該元素的父節(jié)點(diǎn)。

childNodes

只讀的類數(shù)組對(duì)象,它是該節(jié)點(diǎn)的子節(jié)點(diǎn)的實(shí)時(shí)表示

firstChild, lastChild

該節(jié)點(diǎn)的子節(jié)點(diǎn)中的第一個(gè)和最后一個(gè),如果該節(jié)點(diǎn)沒(méi)有子節(jié)點(diǎn)則為null

nextSiblings, prevSublings

該節(jié)點(diǎn)的兄弟節(jié)點(diǎn)的前一個(gè)和下一個(gè)。

nodeType

該節(jié)點(diǎn)的類型。9代表Document節(jié)點(diǎn),1代表Element節(jié)點(diǎn),3代表Text節(jié)點(diǎn),8代表Comment節(jié)點(diǎn),11代表DocumentFragment節(jié)點(diǎn)。

nodeValue

Text節(jié)點(diǎn)或Comment節(jié)點(diǎn)的文本內(nèi)容

nodeName

元素的標(biāo)簽名,以大寫形式表示

setAttribute(name, value)

設(shè)置元素的屬性

getAttribute(name)

得到元素指定的屬性

hasAttribute(name)

檢測(cè)元素是否存在指定的屬性

removeAttribute(name)

刪除元素指定的屬性

innerHTML

獲取元素的內(nèi)容(HTML字符串); 在元素上設(shè)置該屬性調(diào)用了Web瀏覽器的解析器,用新字符串內(nèi)容的解析展現(xiàn)形式替換元素當(dāng)前內(nèi)容。

textContent, (IE innerText)

獲取純文本形式的元素內(nèi)容,或者在文檔中插入純文本

創(chuàng)建,插入和刪除文本

document.createElement()

// 創(chuàng)建一個(gè)<script>元素   
var newNode = document.createElement('script'); 

Element.cloneNode(boolean)

// 復(fù)制已有的節(jié)點(diǎn)
// 給方法傳遞true表示能夠遞歸的復(fù)制所有的后代節(jié)點(diǎn),傳遞false表示只執(zhí)行淺復(fù)制
var newNode = document.getElementById('app').cloneNode(true);

parent.appendChild(child)

// 在指定節(jié)點(diǎn)上插入新的節(jié)點(diǎn)使其成為那個(gè)指定節(jié)點(diǎn)的最后一個(gè)子節(jié)點(diǎn)
var child = document.createElement('script');
script.src = "xxxx";
document.head.appendChild(child);

parent.insertBefore(newNode, node)

// 在指定節(jié)點(diǎn)上插入新節(jié)點(diǎn),新節(jié)點(diǎn)插入在已存在節(jié)點(diǎn)的前面
parent.insertBefore(child, parent.childNode[2]);

如果調(diào)用appendChild()或insertBefore()將已存在文檔中的一個(gè)節(jié)點(diǎn)再次插入,那個(gè)節(jié)點(diǎn)將自動(dòng)從它當(dāng)前的位置刪除并在新的位置重新插入:沒(méi)有必要顯式刪除節(jié)點(diǎn)

parent.removeChild(child)

// 刪除某個(gè)節(jié)點(diǎn)
var node = document.getElementById('app');
node.parentNode.removeChild(node);

parent.replaceChild(newNode, node)

// 替換某個(gè)節(jié)點(diǎn)
var node = document.getElementById('app');
var newNode = document.createElement("p");
newNode.textContent = "Hello world";
node.parentNode.replaceChild(newNode, node);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 個(gè)人博客:https://yeaseonzhang.github.io 花了半個(gè)多月的時(shí)間,終于又把“JS紅寶書”...
    Yeaseon閱讀 11,734評(píng)論 9 52
  • 變量命名、聲明、賦值 1.必須以字母、下劃線或美元符號(hào)開(kāi)頭,后面可以跟字母、下劃線、美元符號(hào)和數(shù)字。2.變量名區(qū)分...
    wq04200閱讀 679評(píng)論 0 1
  • window.history.go(-1) window.history.forward() window.his...
    桃花島主閱讀 402評(píng)論 0 0
  • 1. 什么是DOM 文檔對(duì)象模型 (DOM) 是HTML和XML文檔的編程接口。它提供了對(duì)文檔的結(jié)構(gòu)化的表述,并定...
    hanyuntao閱讀 1,391評(píng)論 0 4
  • 忘了是什么時(shí)候 我站在車站 看你走近黑夜 震驚之余 連一句話 也不能開(kāi)口 走在這條路上 很久很久 我好似領(lǐng)悟 那背...
    紫諾丶柒陌閱讀 360評(píng)論 13 2

友情鏈接更多精彩內(nèi)容