js DOM的事件常見操作實(shí)例詳解
本文實(shí)例講述了js DOM的事件常見操作。分享給大家供大家參考,具體如下:
一、JavaScript的組成
JavaScript基礎(chǔ)分為三個(gè)部分:
- ECMAScript:JavaScript的語法標(biāo)準(zhǔn)。包括變量、表達(dá)式、運(yùn)算符、函數(shù)、if語句、for語句等。
- DOM:文檔對(duì)象模型,操作網(wǎng)頁上的元素的API。比如讓盒子移動(dòng)、變色、輪播圖等。
- BOM:瀏覽器對(duì)象模型,操作瀏覽器部分功能的API。比如讓瀏覽器自動(dòng)滾動(dòng)。
二、事件
JS是以事件驅(qū)動(dòng)為核心的一門語言。
事件的三要素
事件的三要素:事件源、事件、事件驅(qū)動(dòng)程序
總結(jié)如下:
- 事件源:引發(fā)后續(xù)事件的html標(biāo)簽。
- 事件:js已經(jīng)定義好了(見下圖)。
- 事件驅(qū)動(dòng)程序:對(duì)樣式和html的操作。也就是DOM
代碼書寫步驟如下:(重要)
- (1)獲取事件源:
document.getElementById("box"); //類似與ios語言的 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)的獲?。?/strong>
var div1 = document.getElementById("box1"); //方式一:通過id獲取單個(gè)標(biāo)簽
var arr1 = document.getElementsByTagName("div1"); //方式二:通過 標(biāo)簽名 獲得 標(biāo)簽數(shù)組,所以有s
var arr2 = document.getElementsByClassName("hehe"); //方式三:通過 類名 獲得 標(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; //通過改變isGreen的值來控制鼠標(biāo)點(diǎn)擊的效果
}else{
oDiv.style.backgroundColor='green';
isGreen=true;
}
}
</script>
</html>
/*一個(gè)鼠標(biāo)點(diǎn)擊就是一個(gè)事件*/
onload事件
當(dāng)頁面加載(文本和圖片)完畢的時(shí)候,觸發(fā)onload事件。
<script type="text/javascript">
window.onload = function () {
console.log("完畢"); //等頁面加載完畢時(shí),打印字符串
}
</script>
效果:鼠標(biāo)懸停發(fā)生事件,將鼠標(biāo)放在圖片1上面變成了圖片2
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<script>
//window.onload頁面加載完畢以后再執(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頁面元素操作技巧總結(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ò)展分頁工具欄(增加跳轉(zhuǎn)到xx頁)功能
這篇文章主要介紹了bootstrap-table.js擴(kuò)展分頁工具欄,增加跳轉(zhuǎn)到xx頁功能,由于小編的水平停留在dom級(jí),此次擴(kuò)展只支持頁面上的表格,如果大家有好的建議歡迎提出2017-12-12
使用insertAfter()方法在現(xiàn)有元素后添加一個(gè)新元素
為javascript添加insertAfter()方法即在現(xiàn)有元素后添加一個(gè)新元素,示例如下,大家不妨學(xué)習(xí)下2014-05-05
JavaScript對(duì)數(shù)組進(jìn)行隨機(jī)重排的方法
這篇文章主要介紹了JavaScript對(duì)數(shù)組進(jìn)行隨機(jī)重排的方法,實(shí)例分析了javascript實(shí)現(xiàn)數(shù)組隨機(jī)重新排序的兩種實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07
jQuery?事件綁定及取消?bind?live?delegate?on?one區(qū)別解析
這篇文章主要介紹了jquery?事件綁定及取消?bind?live?delegate?on?one區(qū)別解析,本文給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-11-11
關(guān)于Javascript模塊化和命名空間管理的問題說明
最近閑下來的時(shí)候,稍微想了想這個(gè)問題。關(guān)于Javascript模塊化和命名空間管理2010-12-12
配置eslint規(guī)范項(xiàng)目代碼風(fēng)格
這篇文章主要介紹了配置eslint規(guī)范項(xiàng)目代碼風(fēng)格,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-03-03

