js DOM的事件常見(jiàn)操作實(shí)例詳解
本文實(shí)例講述了js DOM的事件常見(jiàn)操作。分享給大家供大家參考,具體如下:
一、JavaScript的組成
JavaScript基礎(chǔ)分為三個(gè)部分:
- ECMAScript:JavaScript的語(yǔ)法標(biāo)準(zhǔn)。包括變量、表達(dá)式、運(yùn)算符、函數(shù)、if語(yǔ)句、for語(yǔ)句等。
- DOM:文檔對(duì)象模型,操作網(wǎng)頁(yè)上的元素的API。比如讓盒子移動(dòng)、變色、輪播圖等。
- BOM:瀏覽器對(duì)象模型,操作瀏覽器部分功能的API。比如讓瀏覽器自動(dòng)滾動(dòng)。
二、事件
JS是以事件驅(qū)動(dòng)為核心的一門語(yǔ)言。
事件的三要素
事件的三要素:事件源、事件、事件驅(qū)動(dòng)程序
總結(jié)如下:
- 事件源:引發(fā)后續(xù)事件的html標(biāo)簽。
- 事件:js已經(jīng)定義好了(見(jiàn)下圖)。
- 事件驅(qū)動(dòng)程序:對(duì)樣式和html的操作。也就是DOM
代碼書寫步驟如下:(重要)
- (1)獲取事件源:
document.getElementById("box"); //類似與ios語(yǔ)言的 UIButton *adBtn = [UIButton buttonWithType:UIButtonTypeCustom];
- (2)綁定事件:
事件源box.事件onclick = function(){ 事件驅(qū)動(dòng)程序 };
- (3)書寫事件驅(qū)動(dòng)程序:關(guān)于DOM的操作
舉例:
<body> <div id="box1">123</div> <script type="text/javascript"> // 1、獲取事件源 var div = document.getElementById("box1"); // 2、綁定事件 div.onclick = function () { // 3、書寫事件驅(qū)動(dòng)程序 alert("我是彈出的內(nèi)容"); } </script> </body> //點(diǎn)擊123將彈出要顯示的內(nèi)容
常用事件:
1、獲取事件源的方式(DOM節(jié)點(diǎn)的獲取)
var div1 = document.getElementById("box1"); //方式一:通過(guò)id獲取單個(gè)標(biāo)簽 var arr1 = document.getElementsByTagName("div1"); //方式二:通過(guò) 標(biāo)簽名 獲得 標(biāo)簽數(shù)組,所以有s var arr2 = document.getElementsByClassName("hehe"); //方式三:通過(guò) 類名 獲得 標(biāo)簽數(shù)組,所以有s
2、綁定事件的方式
方式一:直接綁定匿名函數(shù)
<div id="box1" >123</div> <script type="text/javascript"> var div1 = document.getElementById("box1"); //綁定事件的第一種方式 div1.onclick = function () { alert("我是彈出的內(nèi)容"); } </script>
方式二:先單獨(dú)定義函數(shù),再綁定
<div id="box1" ></div> <script type="text/javascript"> var div1 = document.getElementById("box1"); //綁定事件的第二種方式 div1.onclick = fn; //注意,這里是fn,不是fn()。fn()指的是返回值。 //單獨(dú)定義函數(shù) function fn() { alert("我是彈出的內(nèi)容"); } </script>
注意上方代碼的注釋。綁定的時(shí)候,是寫fn,不是寫fn()。fn代表的是整個(gè)函數(shù),而fn()代表的是返回值。
方式三:行內(nèi)綁定
<!--行內(nèi)綁定--> //注意第一行代碼,綁定時(shí),是寫的"fn()",不是寫的"fn"。因?yàn)榻壎ǖ倪@段代碼不是寫在js代碼里的,而是被識(shí)別成了字符串。 <div id="box1" onclick="fn()"></div> <script type="text/javascript"> function fn() { alert("我是彈出的內(nèi)容"); } </script>
3、事件驅(qū)動(dòng)程序
<style> #box { width: 100px; height: 100px; background-color: pink; cursor: pointer; } </style> </head> <body> <div id="box" ></div> <script type="text/javascript"> var oDiv = document.getElementById("box"); //點(diǎn)擊鼠標(biāo)時(shí),原本粉色的div變大了,背景變紅了 oDiv.onclick = function () { oDiv.style.width = "200px"; //屬性值要寫引號(hào) oDiv.style.height = "200px"; oDiv.style.backgroundColor = "red"; //屬性名是backgroundColor,不是background-Color } </script>
上方代碼的注意事項(xiàng):
- 在js里寫屬性值時(shí),要用引號(hào)
- 在js里寫屬性名時(shí),是backgroundColor,不是CSS里面的background-Color。記得所有的像css屬性的text-*,line-*、backgroun-*等在js中都寫成駝峰
鼠標(biāo)點(diǎn)擊變化顏色:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> .box{ /*class*/ width:100px; height:100px; background-color:green; } </style> </head> <body> <div class="box" id="box">alex</div> </body> <script type="text/javascript"> var oDiv = document.getElementById('box'); var isGreen =true; oDiv.onclick=function(){ console.log(oDiv.style); if (isGreen){ oDiv.style.backgroundColor='red'; isGreen=false; //通過(guò)改變isGreen的值來(lái)控制鼠標(biāo)點(diǎn)擊的效果 }else{ oDiv.style.backgroundColor='green'; isGreen=true; } } </script> </html> /*一個(gè)鼠標(biāo)點(diǎn)擊就是一個(gè)事件*/
onload事件
當(dāng)頁(yè)面加載(文本和圖片)完畢的時(shí)候,觸發(fā)onload事件。
<script type="text/javascript"> window.onload = function () { console.log("完畢"); //等頁(yè)面加載完畢時(shí),打印字符串 } </script>
效果:鼠標(biāo)懸停發(fā)生事件,將鼠標(biāo)放在圖片1上面變成了圖片2
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <script> //window.onload頁(yè)面加載完畢以后再執(zhí)行此代碼 window.onload = function () { //需求:鼠標(biāo)放到img上,更換為另一張圖片,也就是修改路徑(src的值)。 //步驟: //1.獲取事件源 //2.綁定事件 //3.書寫事件驅(qū)動(dòng)程序 //1.獲取事件源 var img = document.getElementById("box"); //2.綁定事件(懸停事件:鼠標(biāo)進(jìn)入到事件源中立即出發(fā)事件) img.onmouseover = function () { //3.書寫事件驅(qū)動(dòng)程序(修改src) img.src = "2.jpg"; // this.src = "image/jd2.png"; }; } </script> </head> <body> <img id="box" src="1.jpg" style="cursor: pointer;border: 1px solid #ccc;"/> </body> </html>
感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運(yùn)行工具:http://tools.jb51.net/code/HtmlJsRun測(cè)試上述代碼運(yùn)行效果。
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript操作DOM技巧總結(jié)》、《JavaScript頁(yè)面元素操作技巧總結(jié)》、《JavaScript事件相關(guān)操作與技巧大全》、《JavaScript查找算法技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
相關(guān)文章
bootstrap-table.js擴(kuò)展分頁(yè)工具欄(增加跳轉(zhuǎn)到xx頁(yè))功能
這篇文章主要介紹了bootstrap-table.js擴(kuò)展分頁(yè)工具欄,增加跳轉(zhuǎn)到xx頁(yè)功能,由于小編的水平停留在dom級(jí),此次擴(kuò)展只支持頁(yè)面上的表格,如果大家有好的建議歡迎提出2017-12-12使用insertAfter()方法在現(xiàn)有元素后添加一個(gè)新元素
為javascript添加insertAfter()方法即在現(xiàn)有元素后添加一個(gè)新元素,示例如下,大家不妨學(xué)習(xí)下2014-05-05JavaScript對(duì)數(shù)組進(jìn)行隨機(jī)重排的方法
這篇文章主要介紹了JavaScript對(duì)數(shù)組進(jìn)行隨機(jī)重排的方法,實(shí)例分析了javascript實(shí)現(xiàn)數(shù)組隨機(jī)重新排序的兩種實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07jQuery?事件綁定及取消?bind?live?delegate?on?one區(qū)別解析
這篇文章主要介紹了jquery?事件綁定及取消?bind?live?delegate?on?one區(qū)別解析,本文給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-11-11關(guān)于Javascript模塊化和命名空間管理的問(wèn)題說(shuō)明
最近閑下來(lái)的時(shí)候,稍微想了想這個(gè)問(wèn)題。關(guān)于Javascript模塊化和命名空間管理2010-12-12配置eslint規(guī)范項(xiàng)目代碼風(fēng)格
這篇文章主要介紹了配置eslint規(guī)范項(xiàng)目代碼風(fēng)格,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-03-03