操作DOM元素 1

2021-10-03 21:58:14 字數 4363 閱讀 7056

js操作dom元素**的編寫

dom樹

傳統的html文件順序是:document->html->(head,body)

根據 dom,html 文件中的每個成分都是乙個節點。

整個文件是乙個文件節點

每個 html 標籤是乙個元素節點

包含在 html 元素中的文字是文字節點

每乙個 html 屬性是乙個屬性節點

注釋屬於注釋節點

一、document物件(dom核心物件)

1、dom屬性

title 返回或設定當前文件的標題

url 返回當前文件的url

bgcolor 設定文件的背景色

fgcolor 設定文件的前景色(設定文字顏色)

alert(document.title)

document.title="helloworld";

alert(document.url)

alert(location.href)

document.bgcolor="red";

document.fgcolor="blue";

2.dom獲取節點方法

getelementbyid() 返回擁有指定id的(第乙個)物件的引用

getelementsbytagname() 返回帶有指定標籤名的物件的集合

getelementsbyname() 返回帶有指定name指定名稱的物件的集合,主要是適用於表單

getelementsbyclassname() 返回帶有指定classname指定名稱的物件的集合

write() 缺點 1.浪費記憶體 2.邏輯性不強。一般通過節點之間的關係屬性獲取節點

var div1=document.getelementbyid("one");

var div2=document.getelementsbytagname("div");

var div3=document.getelementsbyname("name1");

var div4=document.getelementsbyclassname("classname");

二、節點三屬性:

文件中的每個成分都是乙個節點.(包括文字也是節點),節點三個屬性 :

1. nodename : 節點的名稱

2. nodevalue :節點的值

3. nodetype :節點的型別

節點的屬性

a. nodename(節點名稱)

元素節點的 nodename 是標籤名稱

屬性節點的 nodename 是屬性名稱

文字節點的 nodename 永遠是 #text

文件節點的 nodename 永遠是 #document

b. nodevalue(節點值)

1. 元素節點的 nodevalue 是 undefined 或 null

2. 文字節點的 nodevalue 是文字自身

3. 屬性節點的 nodevalue 是屬性的值

1、innerhtml可以作為獲取文字的方法也可以作為修改文字內容的方法

element.innerhtml 會直接返回element節點下所有的html化的文字內容

document.body.innerhtml //返回"文字

文字";

同樣逆向的:

document.body.innerhtm="文字

"會生成

!注意 innerhtml方法只能作用於元素節點呼叫;文字節點並不能使用這個方法返回undefined!

2、nodevalue是乙個html dom的物件屬性;

同樣的 可以通過 nodevalue設定節點的文字內容也可以直接返回文字內容

直接用節點物件呼叫就都可以:

document.getelementsbytagname(div)[0].childnodes[0].nodevalue //返回「文字」

另外 nodevalue 屬性並不只存在於文字節點下 元素節點和屬性節點物件也都具有nodevalue屬性

3、textcontent

與innerhtml方法類似會返回物件節點下所有的文字內容

但是區別為 textcontent返回的內容只有去html化的文字節點的內容 如上例:

document.body.textcontent //返回"文字文字"

!注意在dom中標籤換行產生的空白字元會計入dom中作為文字節點

另外ie8以前不支援textcontent屬性

4、innertext方法

與textcontent方法類似 並且和innerhtml一樣也是作用於元素節點上

但是瀏覽器對於這兩種方法解析空白字元的機制不一樣;不是很常用

類似的還有outtext outhtml等類似操作文字相關的方法,不是很常用不介紹了;

123

4

c. nodetype(節點型別) : nodetype 屬性可返回節點的型別。  

節點型別   節點名字    節點值

nodetype(數值) nodename   nodevalue

元素節點   1     標籤名     null

屬性節點   2     屬性名     屬性值

文字節點   3     #text      文字

注釋節點   8    #comment    注釋的文字

文件節點   9    #document     null

節點名稱:li

節點的值:null

節點型別:1

節點名稱:li

節點的值:null

節點型別:1

節點名稱:li

節點的值:null

節點型別:1

三、 節點的關係屬性

物件.parentnode 獲得父節點的引用

物件.childnodes 獲得子節點的集合

物件.firstchild 獲得第乙個子節點

物件.lastchild 獲得第乙個子節點

物件.nextsibling 獲得下乙個兄弟節點的引用

物件.previoussibling 獲得上乙個兄弟節點的引用

缺點:相容性不好。

通過一些屬性可以來遍歷節點樹:

1、parentnode//獲取所選節點的父節點

var son= document.getelementbyid("son");

document.write(son.parentnode);

2、childnodes //獲取所選節點的子節點們

var father= document.getelementbyid("father");

document.write(father.childnodes );

3、firstchild //firstchild 屬性返回『childnodes』陣列的第乙個子節點。如果選定的節點沒有子節點,則該屬性返回 null。

var father= document.getelementbyid("father");

document.write(father.firstchild );

4、lastchild //lastchild 屬性返回『childnodes』陣列的最後乙個子節點。如果選定的節點沒有子節點,則該屬性返回 null。

var father= document.getelementbyid("father");

document.write(father.lastchild );

5、nextsibling //獲取所選節點的後乙個兄弟節點 列表中最後乙個節點的nextsibling屬性值為null

var son= document.getelementbyid("son");

document.write(son.nextsibling );

6、previoussibling //獲取所選節點的前一兄弟節點 列表中第乙個節點的previoussibling屬性值為null

var son= document.getelementbyid("son");

document.write(son.previoussibling );

Dom元素操作

把建立的p元素新增到父元素box裡 btn1.onclick function 移除父元素裡的p元素 插入元素 insertbefore 被插入的元素,參照元素 var dom document.getelementbyid dom var newdom document.createelement...

DOM元素的操作

dom元素的操作有動態建立dom元素,子父元素操作,dom元素追加,屬性設定等等.前面詳細的總結了dom元素的獲取方式,這裡複習總結一下下.使用createelement 方法建立元素 語法 document.createelement nodename 引數 nodename 引數描述 必須。建立...

操作dom元素(3)

class 標籤名 name 選擇器 queryselectorall 查屬性 點語法獲取元素的特點 attribute 獲取 設定 移除 查內容 textcontent innerhtml 增 innerhtml 新增 侷限性 document.createelement 新增步驟 2.設定標籤屬...