JavsScript中DOM的基本操作
節點及其類型
在 html 文檔的什么位置編寫 js 代碼
直接在 html 頁面中書寫代碼, js 和 html 強耦合, 不利用代碼的維護
- 一般地, 不能在 body 節點之前來直接獲取 body 內的節點, 因為此時 html 文檔樹還沒有加載完成,
- 一般地, 在 body 節點之前編寫 js 代碼, 但需要利用 window.onload 事件,該事件在當前文檔完全加載之后被觸發, 所以其中的代碼可以獲取到當前文檔的任何節點.
在整個 html 文檔的最后編寫類似代碼,有利于頁面的加載
window.onload = function(){};
獲取元素節點
根據節點的 name 屬性獲取符合條件的節點數組,但 ie 的實現方式和 W3C 標準有差別:
- 在 html 文檔中若某節點(li)沒有 name 屬性,則 ie 使用 getElementsByName 不能獲取到節點數組, 但火狐可以.
獲取屬性節點
- 可以直接通過 cityNode.id 這樣的方式來獲取和設置屬性節點的值
- 通過元素節點的 getAttributeNode 方法來獲取屬性節點, 然后在通過 nodeValue 來讀寫屬性值
獲取元素的子節點
- childNodes 屬性獲取全部的子節點, 但該方法不實用. 因為如果要獲取指定的節點 的指定子節點的集合, 可以直接調用元素節點的 getElementsByTagName() 方法來獲取.
- firstChild 屬性獲取第一個子節點
- lastChild 屬性獲取最后一個子節點
獲取文本節點
- 步驟: 元素節點 --> 獲取元素節點的子節點
- 若元素節點只有文本節點一個子節點, 可以先獲取到指定的元素節點 eleNode, 然后利用 eleNode.firstChild.nodeValue 的方法來讀寫其文本節點的值
節點的屬性
nodeName:代表當前節點的名字。只讀屬性,如果給定節點是一個文本節點, nodeName 屬性將返回內容為 #text 的字符串
nodeType:返回一個整數, 這個數值代表著給定節點的類型,只讀屬性。1 -- 元素節點, 2 -- 屬性節點, 3 -- 文本節點
nodeValue:返回給定節點的當前值(字符串). 可讀寫的屬性
- 元素節點, 返回值是 null.
- 屬性節點: 返回值是這個屬性的值
- 文本節點: 返回值是這個文本節點的內容
創建一個元素節點
? 1). createElement(): 按照給定的標簽名創建一個新的元素節點. 方法只有一個參數:被創建的元素節點的名字, 是一個字符串.
? 方法的返回值:是一個指向新建元素 節點的引用指針.
? 新元素節點不會自動添加到文檔里, 它只是一個存在于 JavaScript 上下文的對象.
創建一個文本節點
createTextNode()
- 返回值是一個指向新建文本節點引用指針.
- 方法只有一個參數:新建文本節點所包含的文本字符串.
- 新元素節點不會自動添加到文檔里
為元素節點添加子節點
- appendChild(), 方法的返回值是一個指向新增子節點的引用指針.
- 直接用innerHTML屬性也行
節點的替換
replaceChild(newChild,oldChild):
- 把一個給定父元素里的一個子節點替換為另外一個子節點
- 返回值是一個指向已被替換的那個子節點的引用指針
該節點除了替換功能以外還有移動的功能.
該方法只能完成單向替換, 若需要使用雙向替換, 需要自定義函數:
插入節點
insertBefore(newNode,targetNode):
- 把一個給定節點插入到一個給定元素節點的給定子節點的前面
- 節點 targetNode 必須是 element 元素的一個子節點
- 該方法同時含有移動的功能。
自定義 insertAfter() 方法(將 newChild 插入到 refChild 的后邊 )
刪除節點:
removeChild(node)
- 從一個給定元素里刪除一個子節點
- 返回值是一個指向已被刪除的子節點的引用指針. 節點被刪除時, 這個節點所包含的所有子節點將同時被刪除.
- 如果想刪除某個節點, 但不知道它的父節點是哪一個, parentNode 屬性可以幫忙。
DOM對象與JQuery對象互轉
jQuery對象是一個DOM對象數組,可以使用數組下標的方式轉為DOM對象
var btn = $("#btn-add")[0];$(dom)將Dom轉為jquery對象
轉載于:https://www.cnblogs.com/mabaoqing/p/10624979.html
總結
以上是生活随笔為你收集整理的JavsScript中DOM的基本操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 运算符/类型转换
- 下一篇: 深度学习框架PyTorch一书的学习-第