DOM操作
主要內容: 一些常用的DOM操作:查詢元素、建立元素並給元素新增/刪除屬性、新增/刪除元素以及很常用的classList 方法。
查詢元素常見方法
- 查詢元素常見方法
getElementById()
返回匹配指定ID屬性的元素節點。如果沒有發現匹配的節點,則返回null。
getElementsByClassName()
getElementsByClassName方法返回一個類似陣列的物件(HTMLCollection型別的物件),包括了所有class名字元合指定條件的元素(搜尋範圍包括本身),元素的變化實時反映在返回結果中。這個方法不僅可以在document物件上呼叫,也可以在任何元素節點上呼叫。
getElementsByClassName方法的引數,可以是多個空格分隔的class名字,返回同時具有這些節點的元素。
getElementsByTagName()
getElementsByTagName方法返回所有指定標籤的元素(搜尋範圍包括本身)。返回值是一個HTMLCollection物件,也就是說,搜尋結果是一個動態集合,任何元素的變化都會實時反映在返回的集合中。這個方法不僅可以在document物件上呼叫,也可以在任何元素節點上呼叫。
getElementsByName()
getElementsByName方法用於選擇擁有name屬性的HTML元素,比如form、img、frame、embed和object,返回一個NodeList格式的物件,不會實時反映元素的變化。
- ES5的元素選擇方法 :
querySelector()
querySelector方法返回匹配指定的CSS選擇器的元素節點。如果有多個節點滿足匹配條件,則返回第一個匹配的節點。如果沒有發現匹配的節點,則返回null。
querySelector方法無法選中CSS偽元素。
querySelectorAll()
querySelectorAll方法返回匹配指定的CSS選擇器的所有節點,返回的是NodeList型別的物件。NodeList物件不是動態集合,所以元素節點的變化無法實時反映在返回結果中。
querySelectorAll方法的引數,可以是逗號分隔的多個CSS選擇器,返回所有匹配其中一個選擇器的元素。
建立元素並給元素新增/刪除屬性
- document.createElement() 可以建立元素 。
createElement方法的引數為元素的標籤名,即元素節點的tagName屬性。如果傳入大寫的標籤名,會被轉為小寫。如果引數帶有尖括號(即<和>)或者是null,會報錯。 - element .setAttribute(name, value) 方法可以給元素設定屬性。
setAttribute 實際上完成了兩項操作: 先建立這個屬性,然後設定它的值;如果setAttribute 用在一個本身就有這個屬性的元素節點上,這個屬性的值就會被覆蓋掉。該方法會將其屬性名稱(attribute name)引數小寫化。 setAttribute做出的修改不會反映在文件本身的原始碼裡。 - element.removeAttribute(attrName) 用於刪除元素屬性。
具體操作可以看下面的例子 :
<div id="test">
<a href="">my link</a>
<h1 id="title">my title</h1>
</div>
<script>
var newImg = document.createElement("img"); //建立一個新的img標籤
var newDiv = document.getElementById("test"); // 獲取頁面中id 為test 的元素
newDiv.appendChild(newImg) ; // 將新的img標籤插入到id 為test的元素(此處為div)
newImg.setAttribute("src","https://i.loli.net/2018/03/03/5a9a51803c9d1.jpg") //為新建的img標籤增加src屬性
newImg.setAttribute("alt","貓咪")
newImg.removeAttribute("alt") // 刪除img 的alt屬性
</script>
給頁面元素新增/刪除子元素
- appendChild() 和 insertBefore() 都可以給頁面元素新增子元素
- removeChild()可以刪除頁面元素下的子元素
<div id="ct">
<h1 id="remove">h1</h1>
</div>
<script>
var container = document.getElementById("ct"); // 先定位父節點
var insertedElement = document.createElement("nav");
container.insertBefore(insertedElement, container.firstChild); // 在h1前面新增我們剛剛建立的元素nav
var appendedElement = document.createElement("p");
container.appendChild(appendedElement); // 在div的子元素列表末尾新增我們建立好的元素P
var removedElement = document.getElementById("remove"); // 找到我們想要刪除的元素
container.removeChild(removedElement) // 刪除掉我們剛剛找到的元素 。最後我們可以在控制檯看到div中只剩下nav和p標籤
</script>
element.classList 方法
方法 | 描述 |
---|---|
element.classList.add( String [, String] ) | 新增指定的類值。如果這些類已經存在於元素的屬性中,那麼它們將被忽略 |
element.classList.remove(String [,String]) | 刪除指定的類值 |
element.classList.contains(String) | 檢查元素的類屬性中是否存在指定的類值 |
element.classList.toggle( String [, force] ) | 新增/刪除切換 |
相關文章
- DOM 操作
- BOM與DOM之DOM操作
- DOM常用操作
- jQuery 操作 DOMjQuery
- js的dom操作JS
- 【jQuery】之DOM操作jQuery
- jQuery 之 [ DOM操作 ]jQuery
- JQuery的DOM操作jQuery
- 原生JS 操作 DOMJS
- Html DOM操作TABLEHTML
- JavaScript DOM、BOM操作JavaScript
- 小程式操作dom
- jquery 中的dom操作jQuery
- 常見的DOM操作
- jQuery入門-DOM操作jQuery
- jQuery中的DOM操作jQuery
- React專題:操作DOMReact
- react中的DOM操作React
- 回到基礎:什麼是DOM及DOM操作?
- 【vue系列】Virtual DOM 真的比操作原生 DOM 快嗎?Vue
- JS中DOM操作總結JS
- JavaScript基礎之DOM操作JavaScript
- JavaScript5:常用DOM操作JavaScript
- JavaScript操作DOM常用的APIJavaScriptAPI
- dom操作程式碼例項
- 【JavaScript】DOM之樣式操作JavaScript
- JavaScript 操作DOM效能優化JavaScript優化
- PHP透過DOM操作XMLPHPXML
- JavaScript入門⑦-DOM操作大全JavaScript
- dom元素操作獲取等
- 1.14 JavaScript5:常用DOM操作JavaScript
- 前端最佳實踐(一)——DOM操作前端
- JavaScript ----- 操作DOM物件的屬性JavaScript物件
- 為什麼說DOM操作很慢
- [譯] 探索 Angular 使用 ViewContainerRef 操作 DOMAngularViewAI
- jQuery操作dom節點empty()方法jQuery
- JS錯誤記錄 – dom操作 – 排序JS排序
- JS知識總結之DOM操作JS