JavaScript之DOM_動力節(jié)點Java學院整理
由于HTML文檔被瀏覽器解析后就是一棵DOM樹,要改變HTML的結構,就需要通過JavaScript來操作DOM。
始終記住DOM是一個樹形結構。操作一個DOM節(jié)點實際上就是這么幾個操作:
- 更新:更新該DOM節(jié)點的內容,相當于更新了該DOM節(jié)點表示的HTML的內容;
- 遍歷:遍歷該DOM節(jié)點下的子節(jié)點,以便進行進一步操作;
- 添加:在該DOM節(jié)點下新增一個子節(jié)點,相當于動態(tài)增加了一個HTML節(jié)點;
- 刪除:將該節(jié)點從HTML中刪除,相當于刪掉了該DOM節(jié)點的內容以及它包含的所有子節(jié)點。
在操作一個DOM節(jié)點前,我們需要通過各種方式先拿到這個DOM節(jié)點。最常用的方法是document.getElementById()和document.getElementsByTagName(),以及CSS選擇器document.getElementsByClassName() 。
由于ID在HTML文檔中是唯一的,所以document.getElementById()可以直接定位唯一的一個DOM節(jié)點。
document.getElementsByTagName()和document.getElementsByClassName()總是返回一組DOM節(jié)點。要精確地選擇DOM,可以先定位父節(jié)點,再從父節(jié)點開始選擇,以縮小范圍。
例如:
// 返回ID為'test'的節(jié)點:
var test = document.getElementById('test');
// 先定位ID為'test-table'的節(jié)點,再返回其內部所有tr節(jié)點:
var trs = document.getElementById('test-table').getElementsByTagName('tr');
// 先定位ID為'test-div'的節(jié)點,再返回其內部所有class包含red的節(jié)點:
var reds = document.getElementById('test-div').getElementsByClassName('red');
// 獲取節(jié)點test下的所有直屬子節(jié)點:
var cs = test.children;
// 獲取節(jié)點test下第一個、最后一個子節(jié)點:
var first = test.firstElementChild;
var last = test.lastElementChild;
第二種方法是使用querySelector()和querySelectorAll(),需要了解selector語法,然后使用條件來獲取節(jié)點,更加方便:
// 通過querySelector獲取ID為q1的節(jié)點:
var q1 = document.querySelector('#q1');
// 通過querySelectorAll獲取q1節(jié)點內的符合條件的所有節(jié)點:
var ps = q1.querySelectorAll('div.highlighted > p');
注意:低版本的IE<8不支持querySelector和querySelectorAll。IE8僅有限支持。
嚴格地講,我們這里的DOM節(jié)點是指Element,但是DOM節(jié)點實際上是Node,在HTML中,Node包括Element、Comment、CDATA_SECTION等很多種,以及根節(jié)點Document類型,但是,絕大多數(shù)時候我們只關心Element,也就是實際控制頁面結構的Node,其他類型的Node忽略即可。根節(jié)點Document已經自動綁定為全局變量document。
練習
如下的HTML結構:
JavaScript
Java
Python
Ruby
Swift
Scheme
Haskell
<!-- HTML結構 --> <div id="test-div"> <div class="c-red"> <p id="test-p">JavaScript</p> <p>Java</p> </div> <div class="c-red c-green"> <p>Python</p> <p>Ruby</p> <p>Swift</p> </div> <div class="c-green"> <p>Scheme</p> <p>Haskell</p> </div> </div>
請選擇出指定條件的節(jié)點:
// 選擇<p>JavaScript</p>: var js = ???; // 選擇<p>Python</p>,<p>Ruby</p>,<p>Swift</p>: var arr = ???; // 選擇<p>Haskell</p>: var haskell = ???;
相關文章
所見即所得的富文本編輯器bootstrap-wysiwyg使用方法詳解
這篇文章主要為大家分享一款所見即所得的富文本編輯器bootstrap-wysiwyg,并詳細告訴大家文本編輯器bootstrap-wysiwyg的使用方法,感興趣的小伙伴們可以參考一下2016-05-05
javascript實現(xiàn)仿銀行密碼輸入框效果的代碼
這篇文章通過實例代碼給大家介紹了javascript實現(xiàn)仿銀行密碼輸入框效果,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧2007-12-12

