Dom事件
鼠標(biāo)事件:
mousedown:鼠標(biāo)按鈕被按下(左鍵或者右鍵)時(shí)觸發(fā),不能通過鍵盤觸發(fā)
mouseup:鼠標(biāo)抬起時(shí)觸發(fā),不能通過鍵盤觸發(fā)
click:單擊鼠標(biāo)左鍵或者按下回車鍵時(shí)觸發(fā)硝皂。這點(diǎn)對確保易訪問性很重要常挚,意味著onclick事件處理程序既可以通過鍵盤也可以通過鼠標(biāo)執(zhí)行。
dblclick:雙擊鼠標(biāo)左鍵時(shí)觸發(fā)稽物。
mouseover:鼠標(biāo)移入觸發(fā)
mouseout:鼠標(biāo)移出觸發(fā)
mouseenter:鼠標(biāo)移入范圍內(nèi)觸發(fā)
mouseleave:鼠標(biāo)移出范圍內(nèi)觸發(fā)
mousemove:鼠標(biāo)在元素內(nèi)部不斷移動(dòng)時(shí)觸發(fā)
鍵盤事件
keydown:按鍵按下
keyup:按鍵抬起
keypress:鍵盤按下抬起
**HTML事件
load:文檔加載完成 (寫在js代碼中)
select:被選中的時(shí)候
change:內(nèi)容被改變
focus:得到光標(biāo)
resize:窗口尺寸變化
scroll:滾動(dòng)條移動(dòng)
onchange:表單元素發(fā)生變化后觸發(fā)
oninput:表單元素內(nèi)容發(fā)生變化時(shí)觸發(fā)
Dom節(jié)點(diǎn)的屬性
nodeName:元素的標(biāo)簽名奄毡,以大些的形式返回
nodeValue:根據(jù)節(jié)點(diǎn)的類型設(shè)置或返回節(jié)點(diǎn)的值
如果你想返回元素的文本,記住文本通常是插入到文本節(jié)點(diǎn)中贝或,所以返回的是文本節(jié)點(diǎn)的節(jié)點(diǎn)值(element.childNodes[0].nodeValue)
nodeType:以數(shù)字值返回指定的節(jié)點(diǎn)類型
nodeType(數(shù)值)nodeName nodeValue
·元素節(jié)點(diǎn)1標(biāo)簽名null
·屬性節(jié)點(diǎn)2屬性名 屬性值
·文本節(jié)點(diǎn)3#text 文本
·注釋節(jié)點(diǎn)8#comment注釋的文字
·文檔節(jié)點(diǎn)9#document null
Dom節(jié)點(diǎn)的關(guān)系
·firstChild:第一個(gè)子元素吼过,該節(jié)點(diǎn)沒有子節(jié)點(diǎn)則返回null
·lastChild:最后一個(gè)子元素,該節(jié)點(diǎn)沒有子節(jié)點(diǎn)則返回null
·parentNode傀缩;獲取父節(jié)點(diǎn)
·childNode:獲取所有子節(jié)點(diǎn)那先,找不到返回空數(shù)組
特殊情況
對于元素之間的空格,IE9及之前版本不會(huì)返回文本節(jié)點(diǎn)赡艰,而其他所有瀏覽器都會(huì)返回文本節(jié)點(diǎn)售淡,這就導(dǎo)致了在使用childNodes和firstChild等屬性的行為不一致,為了彌補(bǔ)該差異性慷垮,Element Traversal規(guī)范新定義了一組屬性如下:
·childElementCount:返回子元素(不包括文本節(jié)點(diǎn)和注釋)的個(gè)數(shù)
·firstElementChild:指向第一個(gè)子元素揖闸,firstchild的元素版
·lastElementChild:指向最后一個(gè)元素,lastchild的元素版
·previousElementSibling: 指向前一個(gè)同輩元素
·previousSibling的元素版
nextElementSibling: 指向后一個(gè)同輩元素料身,nextSibling的元素版
· children 獲取元素子元素 返回一個(gè)數(shù)組
· childElementCount 獲取元素子元素的個(gè)數(shù) 3
· firstElementChild 獲取元素第一個(gè)子元素的個(gè)數(shù)<div>one</div>
· lastElementChild 獲取元素最后一個(gè)子元素的個(gè)<div>three</div>
· dom.nextSibling 獲取下一個(gè)節(jié)點(diǎn)#text
· dom.nextElementSibling 獲取下一個(gè)元素<p>哈哈哈</p>
· dom.previousSibling() 獲取上一個(gè)節(jié)點(diǎn) #text
· dom.previousElementSibling() 獲取上一個(gè)元素<span>shangaaa</span>
節(jié)點(diǎn)的操作
創(chuàng)建節(jié)點(diǎn)
·documen.createElement():創(chuàng)建新元素(只接受一個(gè)參數(shù))
·document.createTextNode():創(chuàng)建文本節(jié)點(diǎn)汤纸,參數(shù)為字符串文本
插入節(jié)點(diǎn)
·appendChild()
·node.appendChild(node):插入指定節(jié)點(diǎn)成為那個(gè)節(jié)點(diǎn)最后一個(gè)子節(jié)點(diǎn),在插入的元素節(jié)點(diǎn)上調(diào)用
·insertBefore(新節(jié)點(diǎn)芹血,參照節(jié)點(diǎn))第一個(gè)參數(shù): 待插入的節(jié)點(diǎn)第二在的節(jié)點(diǎn)贮泞,新節(jié)點(diǎn)將插入該節(jié)點(diǎn)的前面在父節(jié)點(diǎn)上調(diào)用
·insertBefore()函數(shù)用法:
新元素:你想插入的元素(newElement)
目標(biāo)元素:你想把這個(gè)元素插入到哪個(gè)元素(targetElement)
父元素:目標(biāo)元素的父元素(parentELement)
parentELement.insertBefore(newElement, targetElement)
如果調(diào)用appendChild()或insertBefore()將已存在文檔中的一個(gè)節(jié)點(diǎn)再次插入,那個(gè)節(jié)點(diǎn)將自動(dòng)從它當(dāng)前的位置刪除并在新的位置重新輸入幔烛,沒有必要顯式刪除該節(jié)點(diǎn)
刪除和替換節(jié)點(diǎn)
·replaceChild:實(shí)現(xiàn)子節(jié)點(diǎn)(對象)的替換啃擦,返回被替換對象的引用
語法:
·node.replaceChild (newnode,oldnew )
·old.parentNode.replaceChild(new, old)
new:第一個(gè)參數(shù)時(shí)新節(jié)點(diǎn)
old:第二個(gè)參數(shù)需要代替的節(jié)點(diǎn),在父節(jié)點(diǎn)上調(diào)用該方法
刪除一個(gè)子節(jié)點(diǎn)并用一個(gè)新節(jié)點(diǎn)取而代之
·removeChild(node)
從文檔樹中刪除一個(gè)節(jié)點(diǎn) 該方法不是在刪除的節(jié)點(diǎn)上調(diào)用饿悬,而是在父節(jié)點(diǎn)上調(diào)用
克隆節(jié)點(diǎn)
克隆節(jié)點(diǎn) 需要克隆的節(jié)點(diǎn).cloneNode(true/false);
用于創(chuàng)建調(diào)用這個(gè)方法的節(jié)點(diǎn)的一個(gè)完全相同的副本 接受一個(gè)布爾值參數(shù)令蛉,表示是否執(zhí)行深復(fù)制
·true: 深復(fù)制
復(fù)制節(jié)點(diǎn)及其整個(gè)子節(jié)點(diǎn)樹
·false: 淺復(fù)制只復(fù)制節(jié)點(diǎn)本身