国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JavaScript之DOM_動力節點Java學院整理

2019-11-19 16:11:51
字體:
來源:轉載
供稿:網友

由于HTML文檔被瀏覽器解析后就是一棵DOM樹,要改變HTML的結構,就需要通過JavaScript來操作DOM。
始終記住DOM是一個樹形結構。操作一個DOM節點實際上就是這么幾個操作:

  1. 更新:更新該DOM節點的內容,相當于更新了該DOM節點表示的HTML的內容;
  2. 遍歷:遍歷該DOM節點下的子節點,以便進行進一步操作;
  3. 添加:在該DOM節點下新增一個子節點,相當于動態增加了一個HTML節點;
  4. 刪除:將該節點從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不支持querySelectorquerySelectorAll。IE8僅有限支持。

嚴格地講,我們這里的DOM節點是指Element,但是DOM節點實際上是Node,在HTML中,Node包括ElementCommentCDATA_SECTION等很多種,以及根節點Document類型,但是,絕大多數時候我們只關心Element,也就是實際控制頁面結構的Node,其他類型的Node忽略即可。根節點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>

請選擇出指定條件的節點:

// 選擇<p>JavaScript</p>:var js = ???;// 選擇<p>Python</p>,<p>Ruby</p>,<p>Swift</p>:var arr = ???;// 選擇<p>Haskell</p>:var haskell = ???;

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 丽水市| 泸西县| 堆龙德庆县| 二手房| 苏州市| 博兴县| 兴化市| 临澧县| 抚顺市| 衡山县| 措美县| 永丰县| 喀喇沁旗| 新津县| 华容县| 应城市| 井研县| 皋兰县| 巴彦县| 新建县| 进贤县| 温州市| 灌阳县| 凌海市| 贺州市| 肇源县| 天峻县| 临澧县| 芷江| 深泽县| 洛南县| 丹阳市| 华坪县| 温泉县| 安吉县| 伊通| 林西县| 彭阳县| 六盘水市| 莒南县| 靖宇县|