JS操作DOM的常用API


原生js中常用的操作DOM的api接口

創建型API總結

創建型api主要包括createElementcreateTextNodecloneNodecreateDocumentFragment四個方法,需要注意下面幾點:

(1)它們創建的節點只是一個孤立的節點,要通過appendChild添加到文檔中
(2)cloneNode要注意如果被復制的節點是否包含子節點以及事件綁定等問題
(3)使用createDocumentFragment來解決添加大量節點時的性能問題

頁面修改型API
修改頁面內容的api主要包括:appendChildinsertBeforeremoveChildreplaceChild

要注意幾個特點:

(1)不管是新增還是替換節點,如果新增或替換的節點是原本存在頁面上的,則其原來位置的節點將被移除,也就是說同一個節點不能存在於頁面的多個位置
(2)節點本身綁定的事件會不會消失,會一直保留着。

節點查詢型API
document.getElementById
document.getElementsByTagName
document.getElementsByName
document.getElementsByClassName
document.querySelector和document.querySelectorAll:通過css選擇器來查找元素,注意選擇器要符合CSS選擇器的規則,使用的深度優先搜索來獲取元素

節點關系型api

1.父關系型api

  • parentNode:Element的父節點可能是Element,Document或DocumentFragment。
  • parentElement:與parentNode的區別在於,其父節點必須是一個Element,如果不是,則返回null

2.兄弟關系型api

  • previousSibling:節點的前一個節點,如果該節點是第一個節點,則為null。注意有可能拿到的節點是文本節點或注釋節點,與預期的不符,要進行處理一下。
  • previousElementSibling:返回前一個元素節點,前一個節點必須是Element,注意IE9以下瀏覽器不支持。
  • nextSibling:節點的后一個節點,如果該節點是最后一個節點,則為null。注意有可能拿到的節點是文本節點,與預期的不符,要進行處理一下。
  • nextElementSibling:返回后一個元素節點,后一個節點必須是Element,注意IE9以下瀏覽器不支持。

3.子關系型api

  • childNodes:返回一個即時的NodeList,表示元素的子節點列表,子節點可能會包含文本節點,注釋節點等。
  • children:一個即時的HTMLCollection,子節點都是Element,IE9以下瀏覽器不支持。
  • firstNode:第一個子節點
  • lastNode:最后一個子節點
  • hasChildNodes方法:可以用來判斷是否包含子節點。

元素屬性型api

setAttribute:根據名稱和值修改元素的特性eg:element.setAttribute(name, value);
getAttribute返回指定的特性名相應的特性值,如果不存在,則返回null或空字符串.

元素樣式型api

window.getComputedStyle是用來獲取應用到元素后的樣式,假設某個元素並未設置高度而是通過其內容將其高度撐開,這時候要獲取它的高度就要用到getComputedStyle,用法如下:

var style = window.getComputedStyle(element[, pseudoElt]);

element是要獲取的元素,pseudoElt指定一個偽元素進行匹配。
返回的style是一個CSSStyleDeclaration對象。
通過style可以訪問到元素計算后的樣式

getBoundingClientRect

getBoundingClientRect用來返回元素的大小以及相對於瀏覽器可視窗口的位置,用法如下:

var clientRect = element.getBoundingClientRect();

clientRect是一個DOMRect對象,包含left,top,right,bottom,它是相對於可視窗口的距離,滾動位置發生改變時,它們的值是會發生變化的。除了IE9以下瀏覽器,還包含元素的height和width等數據,具體可查看鏈接


~只有掌握原生的js,才能真正做好js的開發~
參考鏈接:http://www.imooc.com/article/2562
來源:慕課網

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM