最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js中基本事件的總結(jié)(onclick、onblur、onchange等)

 更新時(shí)間:2025年02月11日 16:53:53   投稿:mdxy-dxy  
事件是用戶在網(wǎng)頁(yè)上的交互行為如點(diǎn)擊、滾動(dòng)、按鍵等,JavaScript通過(guò)事件監(jiān)聽(tīng)來(lái)響應(yīng)這些行為,這里為大家分享一下,js中的基本事件,方便大家選擇合適的觸發(fā)形式

js中的基本事件總結(jié):

特定的場(chǎng)景下發(fā)生的一個(gè)動(dòng)作:事件;事件=函數(shù)(),事件發(fā)生會(huì)觸發(fā)函數(shù)執(zhí)行。\

一、什么是事件?

事件是用戶在網(wǎng)頁(yè)上的交互行為(如點(diǎn)擊、滾動(dòng)、按鍵)或?yàn)g覽器自動(dòng)觸發(fā)的行為(如頁(yè)面加載完成)。JavaScript 通過(guò) 事件監(jiān)聽(tīng) 來(lái)響應(yīng)這些行為。

二、常見(jiàn)事件類型

屬性

當(dāng)以下情況發(fā)生時(shí),出現(xiàn)此事件

FF

N

IE

onabort

圖像加載被中斷

1

3

4

onblur

元素失去焦點(diǎn)

1

2

3

onchange

用戶改變域的內(nèi)容

1

2

3

onclick

鼠標(biāo)點(diǎn)擊某個(gè)對(duì)象

1

2

3

ondblclick

鼠標(biāo)雙擊某個(gè)對(duì)象

1

4

4

onerror

當(dāng)加載文檔或圖像時(shí)發(fā)生某個(gè)錯(cuò)誤

1

3

4

onfocus

元素獲得焦點(diǎn)

1

2

3

onkeydown

某個(gè)鍵盤(pán)的鍵被按下

1

4

3

onkeypress

某個(gè)鍵盤(pán)的鍵被按下或按住

1

4

3

onkeyup

某個(gè)鍵盤(pán)的鍵被松開(kāi)

1

4

3

onload

某個(gè)頁(yè)面或圖像被完成加載

1

2

3

onmousedown

某個(gè)鼠標(biāo)按鍵被按下

1

4

4

onmousemove

鼠標(biāo)被移動(dòng)

1

6

3

onmouseout

鼠標(biāo)從某元素移開(kāi)

1

4

4

onmouseover

鼠標(biāo)被移到某元素之上

1

2

3

onmouseup

某個(gè)鼠標(biāo)按鍵被松開(kāi)

1

4

4

onreset

重置按鈕被點(diǎn)擊

1

3

4

onresize

窗口或框架被調(diào)整尺寸

1

4

4

onselect

文本被選定

1

2

3

onsubmit

提交按鈕被點(diǎn)擊

1

2

3

onunload

用戶退出頁(yè)面

1

2

3

三、

三、事件處理的三種方式

1. HTML 屬性方式(不推薦)

直接在 HTML 元素中定義事件:

<button onclick="alert('Clicked!')">點(diǎn)擊我</button>

運(yùn)行 HTML

2. DOM 屬性方式

通過(guò) JavaScript 為 DOM 元素屬性賦值:

const btn = document.querySelector('button');
btn.onclick = function() {
  console.log('按鈕被點(diǎn)擊');
};
// 缺點(diǎn):無(wú)法綁定多個(gè)相同事件

3. addEventListener(推薦)

btn.addEventListener('click', function(event) {
  console.log('第一次點(diǎn)擊');
});

btn.addEventListener('click', () => {
  console.log('第二次點(diǎn)擊'); // 可以綁定多個(gè)處理函數(shù)
});

優(yōu)點(diǎn):支持多個(gè)監(jiān)聽(tīng)器、可控制事件階段(捕獲/冒泡)

四、事件對(duì)象 (event)

事件處理函數(shù)會(huì)自動(dòng)接收一個(gè) event 對(duì)象,包含事件相關(guān)信息:

element.addEventListener('click', function(event) {
  console.log(event.target); // 觸發(fā)事件的元素
  console.log(event.clientX, event.clientY); // 鼠標(biāo)坐標(biāo)
  event.preventDefault(); // 阻止默認(rèn)行為(如表單提交)
  event.stopPropagation(); // 阻止事件冒泡
});

五、事件冒泡與捕獲

  • 冒泡 (Bubbling):事件從目標(biāo)元素向上傳遞到根元素(默認(rèn)階段)。
  • 捕獲 (Capturing):事件從根元素向下傳遞到目標(biāo)元素。
// 第三個(gè)參數(shù)為 true 表示捕獲階段,false 表示冒泡階段(默認(rèn))
parent.addEventListener('click', () => {
  console.log('父元素捕獲階段');
}, true);

child.addEventListener('click', () => {
  console.log('子元素冒泡階段');
});

六、表單事件示例

const form = document.querySelector('form');
form.addEventListener('submit', function(event) {
  event.preventDefault(); // 阻止表單默認(rèn)提交
  const input = document.querySelector('#username');
  console.log('輸入的值:', input.value);
});

七、事件委托

利用事件冒泡,將事件監(jiān)聽(tīng)綁定到父元素,處理動(dòng)態(tài)子元素:

<ul id="list">
  <li>Item 1</li>
  <li>Item 2</li>
</ul>

運(yùn)行 HTML

document.getElementById('list').addEventListener('click', function(event) {
  if (event.target.tagName === 'LI') {
    console.log('點(diǎn)擊了:', event.target.textContent);
  }
});
// 動(dòng)態(tài)添加的 li 元素也會(huì)自動(dòng)擁有事件響應(yīng)

八、其他要點(diǎn)

解綁事件:使用 removeEventListener

const handler = () => { console.log('Click') };
btn.addEventListener('click', handler);
btn.removeEventListener('click', handler);

匿名函數(shù)問(wèn)題:匿名函數(shù)無(wú)法通過(guò) removeEventListener 解綁。

被動(dòng)事件監(jiān)聽(tīng)器:優(yōu)化滾動(dòng)性能

window.addEventListener('scroll', function(e) {
  // 邏輯代碼
}, { passive: true });

通過(guò)掌握這些基礎(chǔ)知識(shí),你可以實(shí)現(xiàn)豐富的交互功能!建議通過(guò)實(shí)際項(xiàng)目練習(xí)加深理解。

相關(guān)文章

  • javascript數(shù)組詳解

    javascript數(shù)組詳解

    數(shù)組對(duì)象用來(lái)在單獨(dú)的變量名中存儲(chǔ)一系列的值。我們使用關(guān)鍵詞 new 來(lái)創(chuàng)建數(shù)組對(duì)象。有兩種向數(shù)組賦值的方法,也可以使用一個(gè)整數(shù)自變量來(lái)控制數(shù)組的容量
    2014-10-10
  • javascript與java有什么關(guān)系(區(qū)別與相似)

    javascript與java有什么關(guān)系(區(qū)別與相似)

    Java和JavaScript的編程語(yǔ)言,名稱聽(tīng)起來(lái)相似,但卻是兩個(gè)公司開(kāi)發(fā)的不同的產(chǎn)品。Java是SUN公司推出的新一代面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,特別適合于Internet應(yīng)用程序開(kāi)發(fā);而JavaScript是Netscape公司的產(chǎn)品,可以嵌入Web頁(yè)面中的基于對(duì)象和事件驅(qū)動(dòng)的解釋性語(yǔ)言。
    2023-02-02
  • javascript 數(shù)組學(xué)習(xí)資料收集

    javascript 數(shù)組學(xué)習(xí)資料收集

    由于javascript 數(shù)組應(yīng)用比較廣泛,使用的朋友越來(lái)越多,腳本之家特為大家整理了一些js 數(shù)據(jù)方面的學(xué)習(xí)資料,大家看完了,基本上應(yīng)該對(duì)數(shù)組有個(gè)理解了。
    2010-04-04
  • JavaScript—window對(duì)象使用示例

    JavaScript—window對(duì)象使用示例

    window對(duì)象是JavaScript瀏覽器對(duì)象模型中的頂層對(duì)象,其包含多個(gè)常用方法和屬性,下面為大家介紹下window對(duì)象的使用
    2013-12-12
  • Javascript入門(mén)學(xué)習(xí)第九篇 Javascript DOM 總結(jié)

    Javascript入門(mén)學(xué)習(xí)第九篇 Javascript DOM 總結(jié)

    作為一個(gè)js-DOM開(kāi)發(fā)者,你必須知道的一些DOM方法:
    2008-07-07
  • Javascript基礎(chǔ)教程之函數(shù)對(duì)象和屬性

    Javascript基礎(chǔ)教程之函數(shù)對(duì)象和屬性

    這篇文章主要介紹了Javascript基礎(chǔ)教程之函數(shù)對(duì)象和屬性,需要的朋友可以參考下
    2015-01-01
  • JavaScript中的acos()方法使用詳解

    JavaScript中的acos()方法使用詳解

    這篇文章主要介紹了JavaScript中的acos()方法使用詳解,是JS入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-06-06
  • js作用域及作用域鏈概念理解及使用

    js作用域及作用域鏈概念理解及使用

    作用域鏈?zhǔn)怯捎趈s的變量都是對(duì)象的屬性,而該對(duì)象可能又是其它對(duì)象的屬性,而所有的對(duì)象都是window對(duì)象的屬性,所以這些對(duì)象的關(guān)系可以看作是一條鏈
    2013-04-04
  • javascript中call apply 與 bind方法詳解

    javascript中call apply 與 bind方法詳解

    網(wǎng)上文章雖多,大多復(fù)制粘貼,且晦澀難懂,我希望能夠通過(guò)這篇文章,能夠清晰的提升對(duì)apply、call、bind的認(rèn)識(shí),并通過(guò)一些具體的示例給大家展示下這3個(gè)方法的用法,希望大家能夠喜歡。
    2016-03-03
  • 簡(jiǎn)單的ajax連接庫(kù)分享(不用jquery的ajax)

    簡(jiǎn)單的ajax連接庫(kù)分享(不用jquery的ajax)

    自己寫(xiě)了一個(gè)簡(jiǎn)單的ajax連接庫(kù),沒(méi)有使用jquery的ajax,這個(gè)代碼要比jquery輕量,大家參考使用吧,
    2014-01-01

最新評(píng)論

崇礼县| 桓仁| 沙田区| 威海市| 永福县| 民县| 昌吉市| 沧源| 宜城市| 金寨县| 滦南县| 涿州市| 武隆县| 上虞市| 那曲县| 元氏县| 新蔡县| 离岛区| 吉木乃县| 赣榆县| 历史| 长治县| 玛多县| 威海市| 成武县| 烟台市| 咸丰县| 昌邑市| 吉木萨尔县| 栾川县| 广平县| 和平区| 会东县| 万载县| 阿克苏市| 田林县| 山东省| 迭部县| 平果县| 辉县市| 定陶县|