




摘要:前言本篇文章是基礎(chǔ)知識(shí)的篇,如果前面的基礎(chǔ)知識(shí)入門篇看完了,現(xiàn)在就可以學(xué)習(xí)了?;靖拍罘譃槿齻€(gè)部分。在這個(gè)基礎(chǔ)上使用一些新特性,高級(jí)瀏覽器支持,低級(jí)瀏覽器不支持。在對(duì)象中的屬性是一個(gè)布爾值,只有和。
DOM 前言
本篇文章是JavaScript基礎(chǔ)知識(shí)的DOM篇,如果前面的《JavaScript基礎(chǔ)知識(shí)-入門篇》看完了,現(xiàn)在就可以學(xué)習(xí)DOM了。
注意: 所有的案例都在這里鏈接: 提取密碼密碼: 9as4,文章中的每個(gè)案例后面都有對(duì)應(yīng)的序號(hào)。
1. DOM 基本概念javascript 分為三個(gè)部分:ECMAScript、DOM、BOM。想要做出好看的頁(yè)面效果,就需要學(xué)習(xí)DOM,學(xué)習(xí)了DOM之后就可以操作頁(yè)面元素了。
DOM: 用來(lái)操作頁(yè)面元素的一套工具
BOM: 用來(lái)操作瀏覽器一些行為的一套工具
什么是DOM?
Document Object Model: 文檔對(duì)象模型,也叫文檔樹(shù)模型,是一套用來(lái)操作HTML和XML的一套API
文檔對(duì)象模型
HTML頁(yè)面的所有的內(nèi)容,包括標(biāo)簽、文本、注釋、屬性等,在JS的DOM中,都存在一個(gè)一個(gè)的對(duì)象與之對(duì)應(yīng)。因此當(dāng)我們想要操作這些HTML的內(nèi)容時(shí),只需要操作這些對(duì)象即可。
節(jié)點(diǎn):頁(yè)面中所有的內(nèi)容,包括標(biāo)簽、文本、注釋、屬性都被封裝成了對(duì)象,我們把這些對(duì)象叫做節(jié)點(diǎn)。
元素:我們最常操作的是標(biāo)簽節(jié)點(diǎn),也叫元素。
文檔樹(shù)模型
HTML結(jié)構(gòu)是一個(gè)樹(shù)形結(jié)構(gòu),同樣的,這些對(duì)應(yīng)的對(duì)象也是一個(gè)樹(shù)形的結(jié)構(gòu),樹(shù)形結(jié)構(gòu)的好處是能夠非常容易找到某個(gè)節(jié)點(diǎn)的子節(jié)點(diǎn)、父節(jié)點(diǎn)、兄弟節(jié)點(diǎn)。
子節(jié)點(diǎn):child
兄弟節(jié)點(diǎn):sibling
父節(jié)點(diǎn):parent
樹(shù)形結(jié)構(gòu)示意圖:
API
Application Programming Interface:應(yīng)用程序編程接口,其實(shí)就是一大堆的方法,我們可以把API看成是工具。做不同的事情需要不同的工具。
XML
Extensible Markup Language:可擴(kuò)展性標(biāo)記語(yǔ)言,通常用于配置文件,或者和json一樣用于數(shù)據(jù)交互。2. 查找 DOM 對(duì)象
想要操作DOM,首先需要獲取到DOM對(duì)象2.1 根據(jù)id獲取元素
document.getElementById("id名");
document : 整個(gè)頁(yè)面就是一個(gè)document對(duì)象 get : 獲取 Element : 元素 By : 通過(guò) Id : id 參數(shù)是一個(gè)字符串,即id 返回值 : 是一個(gè)元素,即一個(gè)對(duì)象,標(biāo)簽中存在的屬性,在這個(gè)元素中也有屬與之一一對(duì)應(yīng)。 document指的是整個(gè)html頁(yè)面,在DOM中被封裝成了一個(gè)對(duì)象,就是document對(duì)象
示例代碼:
123
舉個(gè)例子:替換圖片的屬性 [01-替換圖片的屬性.html]
效果圖:
3.5 表單獲得、失去焦點(diǎn)事件表單獲得焦點(diǎn)時(shí)觸發(fā)事件,表單失去焦點(diǎn)時(shí)觸發(fā)事件
1、語(yǔ)法(獲得焦點(diǎn))
事件源.onfocus = function(){ // 獲得焦點(diǎn)后執(zhí)行的函數(shù) }
2、語(yǔ)法(失去焦點(diǎn))
事件源.onblur = function(){ // 失去焦點(diǎn)后執(zhí)行的函數(shù) }
示例代碼:京東搜索案例 [07-京東搜索案例.html]
獲得焦點(diǎn)時(shí)input輸入框清空,失去焦點(diǎn)時(shí)恢復(fù)提示信息
效果圖:
3.6 其他觸發(fā)事件匯總在js中觸發(fā)事件有很多種,這里就不一一列舉了,用法和上面的其實(shí)是一樣的,你只需要知道它的事件名即可。
事件名 | 事件具體用法 | 備注 |
---|---|---|
鼠標(biāo)事件 | ||
onclick | 鼠標(biāo)單擊時(shí)觸發(fā)的事件 | |
ondblclick | 鼠標(biāo)雙擊時(shí)觸發(fā)的事件 | |
onmouseover | 鼠標(biāo)移動(dòng)到某對(duì)象范圍的上方時(shí)觸發(fā)此事件 | |
onmouseout | 鼠標(biāo)離開(kāi)某對(duì)象范圍時(shí)觸發(fā)此事件 | |
onmousedown | 鼠標(biāo)按下時(shí)觸發(fā)此事件 | |
onmouseup | 鼠標(biāo)按下后松開(kāi)鼠標(biāo)時(shí)觸發(fā)此事件 | |
onmousemove | 鼠標(biāo)移動(dòng)時(shí)觸發(fā)此事件 | |
鍵盤事件 | ||
onkeypress | 鍵盤上的某個(gè)鍵被按下并且釋放時(shí)觸發(fā)此事件 | |
onkeydown | 鍵盤上某個(gè)按鍵被按下時(shí)觸發(fā)此事件 | |
onkeyup | 當(dāng)鍵盤上某個(gè)按鍵被按放開(kāi)時(shí)觸發(fā)此事件 | |
頁(yè)面相關(guān)事件 | ||
onscroll | 瀏覽器的滾動(dòng)條位置發(fā)生變化時(shí)觸發(fā)此事件 | |
onload | 頁(yè)面內(nèi)容完成時(shí)觸發(fā)此事件 | |
onbeforeunload | 當(dāng)前頁(yè)面的內(nèi)容將要被改變時(shí)觸發(fā)此事件 | |
onerror | 出現(xiàn)錯(cuò)誤時(shí)觸發(fā)此事件 | |
onmove | 瀏覽器的窗口被移動(dòng)時(shí)觸發(fā)此事件 | |
onresize | 當(dāng)瀏覽器的窗口大小被改變時(shí)觸發(fā)此事件 | |
onstop | 瀏覽器的停止按鈕被按下時(shí)觸發(fā)此事件或者正在下載的文件被中斷 | |
onunload | 當(dāng)前頁(yè)面將被改變時(shí)觸發(fā)此事件 | |
表單相關(guān)事件 | ||
onfocus | 當(dāng)某個(gè)元素獲得焦點(diǎn)時(shí)觸發(fā)此事件 | |
onchange | 當(dāng)前元素失去焦點(diǎn)并且元素的內(nèi)容發(fā)生改變而觸發(fā)此事件 | |
onsubmit | 一個(gè)表單被遞交時(shí)觸發(fā)此事件 | |
onreset | 當(dāng)表單中RESET的屬性被激發(fā)時(shí)觸發(fā)此事件 | |
頁(yè)面編輯事件 | ||
onbeforecopy | 當(dāng)頁(yè)面當(dāng)前的被選擇內(nèi)容將要[復(fù)制]到瀏覽者系統(tǒng)的剪貼板前觸發(fā)此事件 | |
onbeforecut | 當(dāng)頁(yè)面當(dāng)前的被選擇內(nèi)容將要[剪切]到瀏覽者系統(tǒng)的剪貼板前觸發(fā)此事件 | |
onbeforeeditfocus | 當(dāng)前元素將要進(jìn)入[編輯]狀態(tài) | |
onbeforepaste | 內(nèi)容將要從瀏覽者的系統(tǒng)剪貼板傳送[粘貼]到頁(yè)面中時(shí)觸發(fā)此事件 | |
onbeforeupdate | 當(dāng)瀏覽者[粘貼]系統(tǒng)剪貼板中的內(nèi)容時(shí)通知目標(biāo)對(duì)象 | |
oncontextmenu | 當(dāng)瀏覽者按下鼠標(biāo)右鍵出現(xiàn)菜單時(shí)或者通過(guò)鍵盤的按鍵觸發(fā)頁(yè)面菜單時(shí)觸發(fā)的事件 | |
oncopy | 當(dāng)頁(yè)面當(dāng)前的被選擇內(nèi)容被[復(fù)制]后觸發(fā)此事件 | |
oncut | 當(dāng)頁(yè)面當(dāng)前的被選擇內(nèi)容被剪切時(shí)觸發(fā)此事件 | |
onpaste | 當(dāng)內(nèi)容被粘貼時(shí)觸發(fā)此事件 | |
onselect | 當(dāng)文本內(nèi)容被選擇時(shí)的事件 | |
onselectstart | 當(dāng)文本內(nèi)容選擇將開(kāi)始發(fā)生時(shí)觸發(fā)的事件 | |
ondrag | 當(dāng)某個(gè)對(duì)象被拖動(dòng)時(shí)觸發(fā)此事件 [活動(dòng)事件] | |
ondragdrop | 一個(gè)外部對(duì)象被鼠標(biāo)拖進(jìn)當(dāng)前窗口或者幀 | |
ondragend | 當(dāng)鼠標(biāo)拖動(dòng)結(jié)束時(shí)觸發(fā)此事件,即鼠標(biāo)的按鈕被釋放了 | |
ondragenter | 當(dāng)對(duì)象被鼠標(biāo)拖動(dòng)的對(duì)象進(jìn)入其容器范圍內(nèi)時(shí)觸發(fā)此事件 | |
ondragleave | 當(dāng)對(duì)象被鼠標(biāo)拖動(dòng)的對(duì)象離開(kāi)其容器范圍內(nèi)時(shí)觸發(fā)此事件 | |
ondragover | 當(dāng)某被拖動(dòng)的對(duì)象在另一對(duì)象容器范圍內(nèi)拖動(dòng)時(shí)觸發(fā)此事件 | |
ondragstart | 當(dāng)某對(duì)象將被拖動(dòng)時(shí)觸發(fā)此事件 | |
ondrop | 在一個(gè)拖動(dòng)過(guò)程中,釋放鼠標(biāo)鍵時(shí)觸發(fā)此事件 | |
onlosecapture | 當(dāng)元素失去鼠標(biāo)移動(dòng)所形成的選擇焦點(diǎn)時(shí)觸發(fā)此事件 | |
數(shù)據(jù)綁定 | ||
onafterupdate | 當(dāng)數(shù)據(jù)完成由數(shù)據(jù)源到對(duì)象的傳送時(shí)觸發(fā)此事件 | |
oncellchange | 當(dāng)數(shù)據(jù)來(lái)源發(fā)生變化時(shí) | |
ondataavailable | 當(dāng)數(shù)據(jù)接收完成時(shí)觸發(fā)事件 | |
ondatasetchanged | 數(shù)據(jù)在數(shù)據(jù)源發(fā)生變化時(shí)觸發(fā)的事件 | |
ondatasetcomplete | 當(dāng)來(lái)子數(shù)據(jù)源的全部有效數(shù)據(jù)讀取完畢時(shí)觸發(fā)此事件 | |
onerrorupdate | 當(dāng)使用onBeforeUpdate事件觸發(fā)取消了數(shù)據(jù)傳送時(shí),代替onAfterUpdate事件 | |
onrowenter | 當(dāng)前數(shù)據(jù)源的數(shù)據(jù)發(fā)生變化并且有新的有效數(shù)據(jù)時(shí)觸發(fā)的事件 | |
onrowexit | 當(dāng)前數(shù)據(jù)源的數(shù)據(jù)將要發(fā)生變化時(shí)觸發(fā)的事件 | |
onrowsdelete | 當(dāng)前數(shù)據(jù)記錄將被刪除時(shí)觸發(fā)此事件 | |
onrowsinserted | 當(dāng)前數(shù)據(jù)源將要插入新數(shù)據(jù)記錄時(shí)觸發(fā)此事件 | |
外部事件 | ||
onafterprint | 當(dāng)文檔被打印后觸發(fā)此事件 | |
onbeforeprint | 當(dāng)文檔即將打印時(shí)觸發(fā)此事件 | |
onfilterchange | 當(dāng)某個(gè)對(duì)象的濾鏡效果發(fā)生變化時(shí)觸發(fā)的事件 | |
onhelp | 當(dāng)瀏覽者按下F1或者瀏覽器的幫助選擇時(shí)觸發(fā)此事件 | |
onpropertychange | 當(dāng)對(duì)象的屬性之一發(fā)生變化時(shí)觸發(fā)此事件 | |
onreadystatechange | 當(dāng)對(duì)象的初始化屬性值發(fā)生變化時(shí)觸發(fā)此事件 |
漸進(jìn)增強(qiáng):基于所有瀏覽器完成基本的功能。在這個(gè)基礎(chǔ)上使用一些新特性,高級(jí)瀏覽器支持,低級(jí)瀏覽器不支持。5. 屬性操作 5.1 普通標(biāo)簽屬性優(yōu)雅降級(jí):先基于主流的、高級(jí)的瀏覽器實(shí)現(xiàn)功能。對(duì)于那些不支持的瀏覽器,盡量去支持,如果支持不了就放棄。
在標(biāo)簽中存在的屬性,在DOM對(duì)象中同樣存在著對(duì)應(yīng)的屬性,只要修改了標(biāo)簽的屬性或者DOM對(duì)象的屬性,兩邊都會(huì)變化。常見(jiàn)的屬性有:title、src、href、className、id等。
屬性操作案例:美女相冊(cè) [08-美女相冊(cè).html]
美女相冊(cè)案例
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/92384.html
摘要:個(gè)人前端文章整理從最開(kāi)始萌生寫文章的想法,到著手開(kāi)始寫,再到現(xiàn)在已經(jīng)一年的時(shí)間了,由于工作比較忙,更新緩慢,后面還是會(huì)繼更新,現(xiàn)將已經(jīng)寫好的文章整理一個(gè)目錄,方便更多的小伙伴去學(xué)習(xí)。 showImg(https://segmentfault.com/img/remote/1460000017490740?w=1920&h=1080); 個(gè)人前端文章整理 從最開(kāi)始萌生寫文章的想法,到著手...
摘要:基礎(chǔ)鞏固基礎(chǔ)總結(jié)使用已經(jīng)好幾年了,由于工作主要是做服務(wù)端開(kāi)發(fā),在工作中逐漸發(fā)現(xiàn)的使用范圍原來(lái)越廣泛。這里要注意,務(wù)必將基礎(chǔ)部分掌握牢靠,磨刀不誤砍柴功,只有將基礎(chǔ)部分掌握并建立起系統(tǒng)的知識(shí)體系,在后面學(xué)習(xí)衍生的其他模式才能游刃有余。 基礎(chǔ)鞏固:JavaScript基礎(chǔ)總結(jié) 使用JavaScript已經(jīng)好幾年了,由于工作主要是做服務(wù)端開(kāi)發(fā),在工作中逐漸發(fā)現(xiàn)JavaScript的使用范圍原...
摘要:摘要想稍微系統(tǒng)的說(shuō)說(shuō)對(duì)于的操作把和常用操作的內(nèi)容歸納成思維導(dǎo)圖方便閱讀同時(shí)加入性能上的一些問(wèn)題前言在前端開(kāi)發(fā)的過(guò)程中極為重要的一個(gè)功能就是對(duì)對(duì)象的操作無(wú)論增刪改查在前端頁(yè)面操作這一范圍內(nèi)都是比較消耗性能的如何高效率的便捷的操作這就是本文要講 摘要 想稍微系統(tǒng)的說(shuō)說(shuō)對(duì)于DOM的操作,把Javascript和jQuery常用操作DOM的內(nèi)容歸納成思維導(dǎo)圖方便閱讀,同時(shí)加入性能上的一些問(wèn)題....
摘要:例如判斷節(jié)點(diǎn)的是否有。的實(shí)現(xiàn)方式源碼的實(shí)現(xiàn)方式源碼里面用到了,是的屬性,屬性返回以數(shù)字值返回指定節(jié)點(diǎn)的節(jié)點(diǎn)類型。如果節(jié)點(diǎn)是屬性節(jié)點(diǎn),則屬性將返回。代碼需要了解屬性,點(diǎn)擊屬性文章問(wèn)題地址 例如: 判斷html節(jié)點(diǎn)的class是否有no-js。 1.jquery的實(shí)現(xiàn)方式 $(html).hasClass(no-js); jquery源碼的實(shí)現(xiàn)方式: var rclass = ...
閱讀 2836·2021-10-08 10:04
閱讀 3306·2021-09-10 11:20
閱讀 547·2019-08-30 10:54
閱讀 3354·2019-08-29 17:25
閱讀 2322·2019-08-29 16:24
閱讀 918·2019-08-29 12:26
閱讀 1494·2019-08-23 18:35
閱讀 1970·2019-08-23 17:53