js常見的原生dom操作總結

2021-10-01 15:08:38 字數 4104 閱讀 9621

node是乙個介面,中文叫節點,很多態別的dom元素都是繼承於它,都共享著相同的基本屬性和方法。常見的node有element,text,attribute,comment,document等(所以要注意節點和元素的區別,元素屬於節點的一種)。

node有乙個屬性nodetype表示node的型別,它是乙個整數,其數值分別表示相應的node型別.

nodelist 物件是乙個節點的集合,一般由node.childnodes、document.getelementsbyname和document.queryselectorall返回的。

不過需要注意,node.childnodes、document.getelementsbyname返回的nodelist的結果是實時的(此時跟htmlcollection比較類似),而document.queryselectorall返回的結果是固定的,這一點比較特殊。

htmlcollection是乙個特殊的nodelist,表示包含了若干元素(元素順序為文件流中的順序)的通用集合,它是實時更新的,當其所包含的元素發生改變時,它會自動更新。

另外,它是乙個偽陣列,如果想像陣列一樣操作它們需要像array.prototype.slice.call(nodelist, 2)這樣呼叫。

document.getelementbyid:根據id查詢元素,大小寫敏感,如果有多個結果,只返回第乙個;

document.getelementsbyclassname:根據類名查詢元素,多個類名用空格分隔,返回乙個htmlcollection。注意相容性為ie9+(含)。另外,不僅僅是document,其它元素也支援getelementsbyclassname方法;

*document.getelementsbytagname:根據標籤查詢元素,表示查詢所有標籤,返回乙個htmlcollection。

document.getelementsbyname:根據元素的name屬性查詢,返回乙個nodelist。

document.queryselector:返回單個node,ie8+(含),如果匹配到多個結果,只返回第乙個。

document.queryselectorall:返回乙個nodelist,ie8+(含)

document.forms:獲取當前頁面所有form,返回乙個htmlcollection;

建立元素:

var elem = document.createelement(「div」);

elem.id = 『test』;

elem.style = 『color: red』;

elem.innerhtml = 『我是新建立的節點』;

建立文字節點:

轉殖乙個節點:node.clonenode(true/false),它接收乙個bool引數,用來表示是否複製子元素。

轉殖節點並不會轉殖事件,除非事件是用

這種方式繫結的,用addeventlistener和node.οnclick=***;方式繫結的都不會複製。

本方法用來建立乙個documentfragment,也就是文件碎片,它表示一種輕量級的文件,主要是用來儲存臨時節點,大量操作dom時用它可以大大提公升效能。

節點修改api都具有下面這幾個特點:

不管是新增還是替換節點,如果其原本就在頁面上,那麼原來位置的節點將被移除;

修改之後節點本身繫結的事件不會消失;

它會將child追加到parent的子節點的最後面。另外,如果被新增的節點是乙個頁面中存在的節點,則執行後這個節點將會新增到新的位置,其原本所在的位置將移除該節點,也就是說不會同時存在兩個該節點在頁面上,且其事件會保留。

將某個節點插入到另外乙個節點的前面,語法:

parentnode.insertbefore(newnode, refnode);

關於第二個引數:

refnode是必傳的,如果不傳該引數會報錯;

如果refnode是undefined或null,則insertbefore會將節點新增到末尾;

removechild用於刪除指定的子節點並返回子節點,語法:

var deletedchild = parent.removechild(node);

deletedchild指向被刪除節點的引用,它仍然存在於記憶體中,可以對其進行下一步操作。另外,如果被刪除的節點不是其子節點,則將會報錯。一般刪除節點都是這麼刪的:

function removenode(node)

replacechild用於將乙個節點替換另乙個節點,語法:

parent.replacechild(newchild, oldchild);

parentnode:每個節點都有乙個parentnode屬性,它表示元素的父節點。element的父節點可能是element,document或documentfragment;

parentelement:返回元素的父元素節點,與parentnode的區別在於,其父節點必須是乙個element元素,如果不是,則返回null;

children:返回乙個實時的htmlcollection,子節點都是element,ie9以下瀏覽器不支援;

childnodes:返回乙個實時的nodelist,表示元素的子節點列表,注意子節點可能包含文字節點、注釋節點等;

firstchild:返回第乙個子節點,不存在返回null,與之相對應的還有乙個firstelementchild;

lastchild:返回最後乙個子節點,不存在返回null,與之相對應的還有乙個lastelementchild;

previoussibling:節點的前乙個節點,如果不存在則返回null。注意有可能拿到的節點是文字節點或注釋節點,與預期的不符,要進行處理一下。

nextsibling:節點的後乙個節點,如果不存在則返回null。注意有可能拿到的節點是文字節點,與預期的不符,要進行處理一下。

previouselementsibling:返回前乙個元素節點,前乙個節點必須是element,注意ie9以下瀏覽器不支援。

nextelementsibling:返回後乙個元素節點,後乙個節點必須是element,注意ie9以下瀏覽器不支援。

給元素設定屬性:

element.setattribute(name, value);

其中name是特性名,value是特性值。如果元素不包含該特性,則會建立該特性並賦值。

getattribute返回指定的特性名相應的特性值,如果不存在,則返回null:

var value = element.getattribute(「id」);

elem.style.color = 『red』;

elem.style.setproperty(『font-size』, 『16px』);

elem.style.removeproperty(『color』);

JS中常見原生DOM操作API 總結整理

node是乙個介面,中文叫節點,很多態別的dom元素都是繼承於它,都共享著相同的基本屬性和方法。常見的node有 element,text,attribute,comment,document 等 所以要注意 節點 和 元素 的區別,元素屬於節點的一種 node有乙個屬性 nodetype 表示no...

原生js操作Dom命令總結

常用的dom方法 document.getelementbyid box 通過id獲取標籤 document.getelementsbytagname div 根據標籤名獲取頁面元素 注意 由於獲取結果可能是多個,element後面要加s 根據標籤獲取的結果是偽陣列形式,偽陣列是不具備陣列的方法。要...

JS中常見原生DOM操作API

幾種物件 node node是乙個介面,中文叫節點,很多態別的dom元素都是繼承於它,都共享著相同的基本屬性和方法。常見的node有 element,text,attribute,comment,document 等 所以要注意 節點 和 元素 的區別,元素屬於節點的一種 node有乙個屬性 nod...