成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

13個需要知道的方法:使用 JavaScript 來操作 DOM

開發 前端
DOM 或文檔對象模型是 web 頁面上所有對象的根。它表示文檔的結構,并將頁面連接到編程語言。它的結構是一個邏輯樹。每個分支結束于一個節點,每個節點包含子節點、對象。DOM API非常龐大,在本文中,咱們只討論比較常用有有用的那些API。

 DOM 或文檔對象模型是 web 頁面上所有對象的根。它表示文檔的結構,并將頁面連接到編程語言。它的結構是一個邏輯樹。每個分支結束于一個節點,每個節點包含子節點、對象。DOM API非常龐大,在本文中,咱們只討論比較常用有有用的那些API。

[[285186]]

document.querySelector & document.querySelectorAll

document.querySelector方法返回文檔中與指定選擇器或選擇器組匹配的第一個 html 元素。 如果找不到匹配項,則返回null。

document.querySelectorAll 方法返回與指定的選擇器組匹配的文檔中的元素列表 (使用深度優先的先序遍歷文檔的節點)。返回的對象是 NodeList 。

  1. // 返回第一個 ul 元素 
  2. const list = document.querySelector('ul'
  3. // 返回所有類名為 info 或者 warning 的 div 元素 
  4. const elements = document.querySelectorAll('div.info, div.warning'); 

document.createElement

在一個 HTML 文檔中, Document.createElement(tagName) 方法創建由 tagName 指定的 HTML 元素,或一個HTMLUnknownElement,如果tagName不被識別。

Node.appendChild

Node.appendChild()方法將節點添加到給定父節點的子節點列表的末尾。 請注意,如果給定的子代是文檔中現有節點的引用,則它將移動到新位置。看看示例:

  1. let list = document.createElement('ul'); 
  2. ['北京''上海''深圳'].forEach(city => { 
  3.   let listItem = document.createElement('li'
  4.   listItem.innerText = city 
  5.   list.appendChild(listItem) 
  6. }) 
  7. document.body.appendChild(list) 

Node.insertBefore

此方法在給定的父節點內的子引用節點之前插入給定節點(并返回插入的節點)

偽代碼如下所示:

  • 北京
  • 上海
  • 深圳

Node.insertBefore('廈門','北京')

  • 廈門
  • 北京
  • 上海
  • 深圳
  1. let list = document.querySelector('ul'); 
  2. let firstCity = list.querySelector('ul > li'); 
  3. let newCity = document.createElement('li'); 
  4. newCity.textContent = 'San Francisco'
  5. list.insertBefore(newCity, firstCity); 

Node.removeChild

Node.removeChild方法從DOM中刪除一個子節點并返回刪除的節點。 請注意,返回的節點不再是DOM的一部分,而是仍存在于內存中。 如果處理不當,可能會導致內存泄漏。

  1. let list = document.querySelector('ul'); 
  2. let firstItem = list.querySelector('li'); 
  3. let removedItem = list.removeChild(firstItem); 

Node.replaceChild

此方法替換父節點中的子節點(并返回替換后的舊子節點)。請注意,如果處理不當,此方法可能導致與Node.removeChild類似的內存泄漏問題。

  1. let list = document.querySelector('ul'); 
  2. let oldItem = list.querySelector('li'); 
  3. let newItem = document.createElement('li'); 
  4. newItem.innerHTML = '前端小智'
  5. let replacedItem = list.replaceChild(newItem, oldItem); 

Node.cloneNode

Node.cloneNode(deep) 方法返回調用該方法的節點的一個副本,deep(可選)表示是否采用深度克隆,如果為true,則該節點的所有后代節點也都會被克隆,如果為false,則只克隆該節點本身.

  1. let list = document.querySelector('ul'); 
  2. let clone = list.cloneNode(); 

Element.getAttribute方法返回元素上給定屬性的值,反之亦然,Element.setAttribute設置給定元素上屬性的值。

  1. let list = document.querySelector('ul'); 
  2. let clone = list.cloneNode(); 

Element.hasAttribute / Element.removeAttribute

Element.hasAttribute方法檢查給定元素是否具有指定的屬性,返回值為boolean。 通過調用Element.removeAttribute方法,我們可以從元素中刪除具有給定名稱的屬性。

  1. let list = document.querySelector('ul'); 
  2. if (list.hasAttribute('id')) { 
  3.     console.log('list has an id'); 
  4.     list.removeAttribute('id'); 
  5. }; 

Element.insertAdjacentHTML

element.insertAdjacentHTML(position, text) 將指定的文本解析為HTML或XML,并將結果節點插入到DOM樹中的指定位置。它不會重新解析它正在使用的元素,因此它不會破壞元素內的現有元素。這避免了額外的序列化步驟,使其比直接innerHTML操作更快。

position是相對于元素的位置,并且必須是以下字符串之一:

beforebegin:元素自身的前面。

afterbegin:插入元素內部的第一個子節點之前。

beforeend:插入元素內部的最后一個子節點之后。

afterend:元素自身的后面。

text是要被解析為HTML或XML,并插入到DOM樹中的字符串。

  1. <!-- beforebegin --> 
  2. <div> 
  3.   <!-- afterbegin --> 
  4.   <p>Hello World</p> 
  5.   <!-- beforeend --> 
  6. </div> 
  7. <!-- afterend --> 

示例:

  1. var list = document.querySelector('ul'); 
  2. list.insertAdjacentHTML('afterbegin''<li id="first-item">First</li>'); 

總結

希望本文對你有所幫助,并且有助于你理解DOM。正確處理DOM樹非常重要,如果操作不正確,可能會導致嚴重后果。

 

責任編輯:華軒 來源: segmentfault
相關推薦

2024-04-03 10:29:13

JavaScrip優化技巧

2023-05-08 16:06:33

2023-03-19 16:02:33

JavaScrip技巧編程語言

2022-08-10 12:02:52

面試JavaScript

2009-06-30 13:00:30

JSP入門

2020-03-27 12:30:39

python開發代碼

2021-12-14 09:12:40

Gopher結構體接口

2017-10-24 11:59:41

JavaScript

2013-03-04 09:34:48

CSSWeb

2023-01-09 17:23:14

CSS技巧

2022-07-26 09:02:15

ES6ES13ECMAScript

2010-09-08 15:47:08

JavsScriptJavaScript

2022-09-27 14:36:57

JavaScrip數組開發

2013-07-11 13:56:37

大數據

2022-07-06 15:51:48

瀏覽器開發者工具

2015-09-20 16:23:27

2010-06-03 11:39:28

網絡性能

2015-03-24 13:31:06

2021-09-02 08:24:41

TypeScript 泛型前端

2011-09-20 10:56:35

云計算PaaS
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美一二区 | 久久久蜜桃一区二区人 | 九九看片 | 欧美在线视频a | 精品视频在线播放 | 午夜视频导航 | 免费黄色片视频 | 天天拍天天操 | 日韩在线观看中文字幕 | 久久69精品久久久久久国产越南 | 亚洲日本欧美日韩高观看 | 日本在线一二 | 久久久久久国产精品免费 | 国产成人网 | 91av免费版 | 日韩欧美在线视频播放 | 国产黄色在线 | 国产a一区二区 | av中文在线 | 日韩免费视频一区二区 | 亚洲国产成人精品久久 | 涩涩99| 亚洲一区 | 亚洲成人精品一区 | 精品久久久久久久久久久久久久 | 黄色免费看 | 国产日韩欧美精品一区二区三区 | 亚洲免费视频一区二区 | 成人在线视频网站 | av色站| 91麻豆产精品久久久久久夏晴子 | 伊人免费网 | 国产精品免费在线 | 欧美综合一区二区三区 | 蜜桃传媒av | 国产精品久久在线观看 | 中文字幕 在线观看 | 精品久久一区 | 欧美精品一区二区三区四区 在线 | 久久99精品国产 | 久久精品国产一区二区电影 |