




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