node節點,一共有10個重要屬性:
nodetype,得到1-12的數字,對應著不同的節點型別,
nodeName,得到節點名稱
nodeValue,得到節點值,string型別,不一定存在,沒有值的時候返回null
childNodes,得到子節點,返回列表(偽陣列)
parentNode,得到父節點
previousSIbling,得到前一個兄弟節點
nextSibling,下一個兄弟節點
firstChild,第一個子節點
lastChild,最後一個子節點
ownerDocument,當前文件的文件節點
7個方法:
hasChildNodes(),判斷有沒有子節點,返回布林值
appendChild(),插入節點
insertBefore(a,b) b為參照節點
removeChild(a)a為要刪除的節點
replaceChild(a,b)替換子節點,拿a替換b
cloneNode(true/false),選true為深複製,方法和子節點一併克隆,返回新克隆的節點
normarLize()標準化,針對文字節點而言
dom樹上的每一個節點都是node物件,12種型別,3種最常見
document節點------代表整個文件,也就是整個html,本身是window的屬性,也就是全域性變數,有幾個重要的屬性:
documentElement,指的是<html>標籤裡的內容
body,指的是<body>標籤裡的內容
title,指的是整個頁面的標題,也就是head標籤裡的title屬性,可以直接修改document.title
domain,指的是整個頁面的域名資訊,可讀可寫,但是不同於location.href,domain只能從低階域名向高階域名改
referer,可返回載入當前文件的文件的 URL
element節點,遇上的節點大部分都是element節點,它的一些重要屬性:
nodeType是1,
dir代表當前語言方向(ltr,rtl),
className,注意不是class
如何獲取節點:
1,Document.getELementById
2,Document.getELementsByName,獲取的偽陣列
3,Document.getELementsByClassName,獲取的偽陣列
4,Document.getELementsByTagName,獲取的偽陣列
5,querySelectAll,獲得偽陣列
6,querySelector
如何建立節點:
Document.creatElement()接收字串,或者標籤名,或者一段html
節點的標準特性(自帶的):
1,對於html是不區分大小寫的,js是區分大小寫的,不管html裡是大寫還是小寫,js中操作必須是轉換成小寫,如果是多單詞結合,應該轉換成駝峰寫法,如果有關鍵字,前面要加上html,比如html中lable標籤的for屬性要改成htmlFor
2,html標籤裡的屬性永遠是字串型別,而js中獲取的並不一定,比如input的maxLength是數字型別,checked為布林型別
3,js獲取的style是一個樣式物件
4,這些屬性只能獲取和設定,不能刪除
讀寫節點的標準特性和非標準特性(自定義的),和點語法不同的是,得到的永遠是字串型別;關鍵字正常使用,比如getAttribute(“class”):
getAttribute(),
setAtrribute(),
hasAtrribute(),
removeAtrribute()
html5增加了dataSet屬性,保證了自定義屬性的合法性,dataSet屬性在html中不支援駝峰命名,比如:
data-first-name,js中可以用dataSetfirstName獲取
dataSet屬性是一個雙向的介面,也就是在js中可以實時地操作此屬性
優點:
1、自定義屬性合法化
2、方便管理
3、說明支援html,也指出css3,可以把屬性選擇器和dataSet屬性結合起來使用
attributes屬性可以把元素節點的所有屬性列舉出來,是一個偽陣列的形式,但是既可以用下標來定位,也可以用key來定位
文字節點:
文字節點裡麵包含的可以是純文字,也可以是轉義後的html節點
一點方法:
appendData(a)
deleteData(a,b)
insertData(a,b)
replaceData(a,b,c)
spliceData(a)
subStringData()
建立文字節點:
Document.creatTextNode()