操作DOM 由於HTML文檔被瀏覽器解析後就是一棵DOM樹,要改變HTML的結構,就需要通過JavaScript來操作DOM。 始終記住DOM是一個樹形結構。操作一個DOM節點實際上就是這麼幾個操作: 更新:更新該DOM節點的內容,相當於更新了該DOM節點表示的HTML的內容; 遍歷:遍歷該DOM節 ...
操作DOM
DOM中節點類型
Document文檔節點:代表整個網頁,不代表任何HTML標記,但它是html的父節點
element元素節點:指任何HTML標記。每一個HTML標記就稱一個“元素節點”。它可以有文本節點和屬性節點。
attribute屬性節點:指HTML標記的屬性。
text節點:是節點樹的最低節點。
核心DOM中的公共的屬性和方法
提示:核心DOM中查找結點(標記),都是先從根節點開始的(html節點)。主要是針對於HTML4.0開發的。
HTML DOM的新特性
每一個HTML標記與元素對象的屬性一一對應
核心DOM中的屬性方法,元素對象都能用
HTML DOM訪問HTML元素的方法(最常用)
getElementById("id名");
getElementByTagName("TagName名"); //標記,和核心DOM中nodeName一樣
getElementByClass("class名");
CSS的DOM動態樣式
**使用JS操作CSS中的各屬性,JS只能操作修改行內樣式。對於類樣式,可以通過className來賦值。外聯式無法操作**
**style樣式代替css樣式**
style對象屬性與CSS屬性的轉換
1.如果是一個單詞,則直接寫
2.如果是多個單詞,則第一個單詞全小寫,後面每個單詞首字母大寫,並去掉中劃線。
DOM中Event對象
由於HTML文檔被瀏覽器解析後就是一棵DOM樹,要改變HTML的結構,就需要通過JavaScript來操作DOM。
始終記住DOM是一個樹形結構。操作一個DOM節點實際上就是這麼幾個操作:
更新:更新該DOM節點的內容,相當於更新了該DOM節點表示的HTML的內容;
遍歷:遍歷該DOM節點下的子節點,以便進行進一步操作;
添加:在該DOM節點下新增一個子節點,相當於動態增加了一個HTML節點;
刪除:將該節點從HTML中刪除,相當於刪掉了該DOM節點的內容以及它包含的所有子節點。
在操作一個DOM節點前,我們需要通過各種方式先拿到這個DOM節點。最常用的方法是document.getElementById()和document.getElementsByTagName(),以及CSS選擇器document.getElementsByClassName()。
由於ID在HTML文檔中是唯一的,所以document.getElementById()可以直接定位唯一的一個DOM節點。document.getElementsByTagName()和document.getElementsByClassName()總是返回一組DOM節點。要精確地選擇DOM,可以先定位父節點,再從父節點開始選擇,以縮小範圍。
演示:
// 返回ID為'test'的節點:
var test = document.getElementById('test');
// 先定位ID為'test-table'的節點,再返回其內部所有tr節點:
var trs = document.getElementById('test-table').getElementsByTagName('tr');
// 先定位ID為'test-div'的節點,再返回其內部所有class包含red的節點:
var reds = document.getElementById('test-div').getElementsByClassName('red');
// 獲取節點test下的所有直屬子節點:
var cs = test.children;
// 獲取節點test下第一個、最後一個子節點:
var first = test.firstElementChild;
var last = test.lastElementChild;
第二種方法是使用querySelector()和querySelectorAll(),需要瞭解selector語法,然後使用條件來獲取節點,更加方便:
// 通過querySelector獲取ID為q1的節點:
var q1 = document.querySelector('#q1');
// 通過querySelectorAll獲取q1節點內的符合條件的所有節點:
var ps = q1.querySelectorAll('div.highlighted > p');
註意:低版本的IE<8不支持querySelector和querySelectorAll。IE8僅有限支持。
嚴格地講,我們這裡的DOM節點是指Element,但是DOM節點實際上是Node,在HTML中,Node包括Element、Comment、CDATA_SECTION等很多種,以及根節點Document類型,但是,絕大多數時候我們只關心Element,也就是實際控制頁面結構的Node,其他類型的Node忽略即可。根節點Document已經自動綁定為全局變數document。