1.事件處理函數
# 事件是指自動觸發的或使用者手動觸發的物件狀態的改變。
事件處理函數:當事件觸發時,自動執行的函數
事件處理函數的本質上是物件的一個特殊屬性,而該屬性指向了一個函數。
每個元素物件都能觸發各種事件,而每個事件都對應一個事件處理函數。
當沒有綁定事件處理函數時,依然可以觸發事件,但是由於此時的事件綁定函數為空,所以不會執行任何操作。
在程式執行時,將對應的函數或語句綁定給物件的某個事件處理函數,那麼一旦該物件的指定事件觸發,瀏覽器就會變回自動執行該物件的事件處理函數中的操作。
綁定事件處理函數= 為on事件名稱(此函數)賦值
2.基本事件分類
1.滑鼠事件
onclick onbonlick onmousedown。 多moon onmusemove
2.鍵盤事件onkeydown onkeyup
onkeypress3.狀態事件onload onunload onchange(select) onfocus(表單) onblur(表單) onresize onsubmit #amit #」關於事件#5#l#.Isubmit #」事件。
# # 為特定的時間定義監聽函數有三種方式:
1.直接在HTML中定義元素的事件的相關屬性<p style="margin-bottom: 7px;"><标签 on事件名="fun()/js语句">按钮</标签</p>
<span style="color: #0000ff"><</span><span style="color: #800000">标签 class</span><span style="color: #0000ff">="d1"</span><span style="color: #ff0000"> onclick</span><span style="color: #0000ff">="fun()"</span><span style="color: #0000ff">></span><span style="color: #000000"><span style="color: #ff0000">相当于</span>d1.onclick=function(){
console.log(this.className); //d1
eval("fun()");//[window.]fun
}<br/><strong><span style="color: #ff0000">结论:fun()中this指向window</span></strong></span>
//若要获得当前目标元素对象html:
onxxx="fun(this)"
js中定义函数时:
fun(elem);
這種方式違背了「內容和行為相互分離」的原則,應該盡量少用。
2.在JavaScript中為元素的事件相關屬性賦值:
elem.on事件名=函数对象;
這種方式實現了“內容與行為相分離”,但是元素只能綁定一個監聽函數。
3.高階事件處理方式,一個事件能夠綁定多個監聽函數:
DOM標準:elem.addEventListener(「事件名稱」,事件對象,是否在捕獲階段觸發)
IE8標準:elem.attachEvent("on事件名",事件物件)
btnObj.attachEvent('onclick',function(){}); //IE btnObj.addEventListener('click',function(){}); //DOM ... doucument.body.attachEvent('onload',initData); //IE document.body.addEventListener('load',initData); //DOM function(){ ... }
這種方式能夠為一個元素綁定多個監聽函數,但是需要注意瀏覽器相容性問題。
小範例:反向執行事件處理函數html:
##css:
js:
# 結果:
原始
# 點選最內層方塊結果:
3.
#週期
DOM
解釋器建立了一個event物件之後,會依照下列程序將其在HTML元素間進行傳播: 第一階段:事件捕獲,事件物件沿著DOM樹向下傳播(IE中的事件模型中沒有此階段) 第二階段:目標觸發,運行事件監聽函數
第三階段:事件冒泡,事件沿著DOM樹向上傳播# 1.事件的冒泡處理機制:
當處於DHTML物件模型底部物件事件發生時會依序啟動上述物件定義的同類事件的處理
IE
只有两个阶段,没有捕获
4.event对象
任何事件触发之后都会产生一个event对象
当事件发生时,自动创建,封装了事件信息(keyCode/screenX/screenY...)
event对象记录事件发生时的鼠标位置,键盘按键状态和触发对象等信息,事件对象的常用属性:
- secElement(IE) / target(DOM) : 事件源对象 - eventPhase : 事件传播的阶段 - clientX/offsetX/pageX/screenX/x : 事件发生时的X坐标 - clientY/offsetY/pageY/screenY/y : 事件发生时的Y坐标 - which/keyCode/charCode : 键盘事件中按下的按键 - button : 鼠标哪个按键被按下 - cancelBubble : 是否取消事件冒泡 - returnValue : 是否阻止事件的默认行为
1.目标元素对象(从一而终)
1.HTML绑定事件方式
html: onclick="fun(event)" //event必须这样写,不能变 //实际调用时,event会自动获得当前事件的对象 js: fun(e){ //e中获取到的就是当前的事件对象 }
2.js绑定方式
//DOM标准:自动创建event对象,默认以第一个参数传入自定义的事件处理函数对象 //IE标准:window全局的event属性,当事件发生时,自动创建event对象,保存在window.event中 var e=window.event||arguments[0]; var src=e.srcElement||e.target;
5.取消冒泡和利用冒泡
1.取消冒泡
DOM标准:e.stopPropagation()
IE标准:e.cancelBubble=true;
用在当前的事件处理函数的末尾
if(e.stopPropagation) { e.stopPropagation(); }else{ e.cancelBubble=true; }
2.利用冒泡
优化:若多个子元素中定义了相同的事件处理函数,只需要在共同的父元素上定义一次即可
原理:事件的捕获和冒泡不会受到程序的干扰,当触发子元素时,会捕获到该元素,然后在父元素触发事件。
6.取消事件
if(e.preventDefault){ e.preventDefault(); //DOM }else{ e.returnValue=false; //IE }
何时取消:eg:表单提交之前,若验证未通过,就取消之后的自动提交。
以上是JavaScript中關於事件的簡單詳述的詳細內容。更多資訊請關注PHP中文網其他相關文章!

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

Python更适合数据科学和机器学习,JavaScript更适合前端和全栈开发。1.Python以简洁语法和丰富库生态著称,适用于数据分析和Web开发。2.JavaScript是前端开发核心,Node.js支持服务器端编程,适用于全栈开发。

JavaScript不需要安裝,因為它已內置於現代瀏覽器中。你只需文本編輯器和瀏覽器即可開始使用。 1)在瀏覽器環境中,通過標籤嵌入HTML文件中運行。 2)在Node.js環境中,下載並安裝Node.js後,通過命令行運行JavaScript文件。

如何在Quartz中提前發送任務通知在使用Quartz定時器進行任務調度時,任務的執行時間是由cron表達式設定的。現�...

在JavaScript中如何獲取原型鏈上函數的參數在JavaScript編程中,理解和操作原型鏈上的函數參數是常見且重要的任�...

在微信小程序web-view中使用Vue.js動態style位移失效的原因分析在使用Vue.js...

在Tampermonkey中如何對多個鏈接進行並發GET請求並依次判斷返回結果?在Tampermonkey腳本中,我們經常需要對多個鏈...


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

Atom編輯器mac版下載
最受歡迎的的開源編輯器

WebStorm Mac版
好用的JavaScript開發工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。