Javaweb - 5 事件的綁定

目錄

什么是事件

常見事件

鼠標事件

鍵盤事件

表單事件

事件的綁定方式

通過元素的屬性綁定

通過 DOM 編程動態綁定

總結:


什么是事件

HTML 事件可以是瀏覽器行為,也可以是用戶和行為。當一些行為發生時,可以自動觸發對應的 JS 函數的運行。JS 的事件驅動指的就是,行為觸發代碼運行,這一特點。

常見事件

?詳見:HTML DOM 事件對象 | 菜鳥教程

鼠標事件

鍵盤事件

表單事件

事件的綁定方式

通過元素的屬性綁定

測試鼠標事件

測試鍵盤事件

測試表單事件:

這里需要注意的是:

當點擊輸入框之后,即是獲得焦點了,再當鼠標點擊輸入框以外的位置,即是失去焦點了。

當向輸入框中輸入內容后,控制臺并不會打印“內容改變了”,而是當輸入完內容之后,鼠標再點擊輸入框以外的位置,此時才真的是內容發生改變了,才會打印“內容改變了”。

我們還可以拿到用戶在輸入框 / 選擇框改變的值:

補充:在 select 標簽的 option 標簽中,value 值默認就是雙標簽中間的文本,但我們也可以在 option 標簽中手動指定 value ==》 <option value = "1">北京</option>

還有是在表單提交的按鈕上關聯事件:

我們關聯的事件 testSubmit 函數中,使用的是 alert,這樣在這里,我們可以有機會來阻止表單的提交 ==》event.preventDefault(); 這行代碼,就可以阻止組件的默認行為(組件的默認行為,就類似于,點擊 submit 的按鈕,就會提交,點擊 reset 的按鈕,就會重置~)

增加了阻止組建默認行為的代碼后,仍然會跳出彈框,但是當我們點擊確定的時候,卻無法跳轉到表單中的 action 地址~

還有阻止表單提交的方法如下:

彈窗有三種方式:

? ? ? ? 1. alert() 信息提示框

? ? ? ? 2. prompt() 信息輸入框

? ? ? ? 3. confirm() 信息確認框

上面的這種阻止方法,就利用了信息確認框,confirm() 會給我們返回一個 boolean 類型的變量,當我們點擊取消的時候,flag 為 false,就會阻止表單提交~

還有一種方法是:直接利用返回值~

補充注意:

? ? ? ? 1. 通過事件元素屬性綁定函數,在行為發生的時候會自動執行函數

? ? ? ? 2. 一個事件可以同時綁定多個函數

? ? ? ? 3. 一個元素可以同時綁定多個事件

? ? ? ? 4. 方法中可以傳入 this 對象,代表當前元素

通過 DOM 編程動態綁定

這里先是大概介紹一下 DOM 編程~

通過 document.getElementById 獲得了一個對象,這個對象就是一個按鈕

但,細心的觀眾已經發現,上面的 script 代碼,我們是放在了 body 里面,我們前面不是說過嗎,script 的代碼,放在任何地方都可以,但是我們一般不是都放在 head 標簽中嗎?

==》

我們嘗試一下,如果把 DOM 編程的代碼,放在 head 中

?

測試發現,我勒個豆,為什么這次點擊那個按鈕,就沒有反應了呢????

==》

代碼的順序會影響瀏覽器對代碼的解析~

瀏覽器從上往下解析,如果 DOM 編程中的代碼,放在 body 中的 button 后面,就可以正常通過 documentr.getElementById 來返回獲取到這個按鈕。

但是,當 DOM 編程中的代碼,被放在 head 中,瀏覽器解析的時候,從上往下掃描,是先掃到了 document.getElementById,通過 id 找到 btn1,但此時瀏覽器還沒有掃到下面的 button 代碼,所以,這行代碼就無法根據 document.getElementById 來獲得按鈕,所以獲取的對象就是 null,是無法在 null 上設置事件的~ 所以當我們 F12 打開控制臺的時候,會出現下面的報錯信息~

如何解決呢???

==》

可以先讓瀏覽器掃描完完整的所有代碼,然后再執行 script 里面的代碼就可以啦~

這時候就繼前三種,鼠標事件,鍵盤事件,表單事件之后,有了第四種事件,頁面加載事件~

onload ==》 頁面加載完畢事件~

onload 事件是多會發生的呢???

==》

當瀏覽器將所有的代碼都掃描完成之后,才會執行 onload 綁定的事件

如上面的代碼, 就可以實現我們想要的功能啦~

即因為 body 中有了 onload 事件,就會掃描完整個瀏覽器的代碼,再執行 onload 中的代碼,將其封裝為一個函數 ready()

我們也可以對上面的方法進行簡寫:

直接在 head 位置的 script 中,用 window.onload 即可~

?我們也可以用上面的方法對 div 進行事件綁定:

通過上面的代碼,就可以讓本來是 green 的 div 框,通過單擊,然后轉換成 red ~

總結:

DOM 編程在本文僅僅只是淺嘗即止是使用,后面我們會詳細介紹~

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/86114.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/86114.shtml
英文地址,請注明出處:http://en.pswp.cn/web/86114.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

怎么讓二級域名綁定到wordpesss指定的頁面

要將二級域名(如 beijing.wodepress.com)綁定到 WordPress 指定頁面(如 wodepress.com/beijing)&#xff0c;可以通過以下步驟實現&#xff1a; 1. 設置泛域名解析 在域名注冊商的管理后臺&#xff0c;添加一條泛域名解析記錄&#xff1a; 主機記錄&#xff1a;輸入 *(星號)…

Ragflow源碼:launch_backend_service.sh

流程圖 #mermaid-svg-hRqGAXWC651HHOLZ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-hRqGAXWC651HHOLZ .error-icon{fill:#552222;}#mermaid-svg-hRqGAXWC651HHOLZ .error-text{fill:#552222;stroke:#552222;}#me…

前端的跨域問題

前端新手也能看懂的跨域問題詳解 在前端開發中&#xff0c;我們經常會聽到“跨域問題”。尤其是在本地調試前端和后臺接口時&#xff0c;瀏覽器突然拋出一堆報錯信息&#xff0c;比如&#xff1a; Access to XMLHttpRequest at [http://api.xxx.com/data](http://api.xxx.com…

TCP 連接在異常情況下的斷開機制

文章目錄 一、進程(客戶端)被 kill 掉1、kill [-15]2、kill -9 二、進程(客戶端) core 掉 一、進程(客戶端)被 kill 掉 詳細驗證流程 1、kill [-15] 2、kill -9 二、進程(客戶端) core 掉

【甲方安全建設】持續滲透測試(一)

持續滲透測試是一種現代安全方法&#xff0c;它對針對組織數字資產的網絡攻擊進行實時或近實時模擬&#xff0c;確保在漏洞出現時識別并解決漏洞… 文章目錄 行業洞察持續滲透測試不是什么&#xff1f;1. 非單一自動化漏洞掃描2. 非傳統人工滲透測試的替代品3. 非萬能解決方案4…

LOCAL PATTERNS GENERALIZE BETTER FOR NOVEL ANOMALIES

標題&#xff1a;局部模式在新穎異常上的泛化能力更強 原文鏈接&#xff1a;https://openreview.net/forum?id4ua4wyAQLm 源碼鏈接&#xff1a;https://github.com/AllenYLJiang/Local-Patterns-Generalize-Better/ 發表&#xff1a;ICLR-2025 摘要 視頻異常檢測&#xff08;…

ABP vNext + Azure Application Insights:APM 監控與性能診斷最佳實踐

ABP vNext Azure Application Insights&#xff1a;APM 監控與性能診斷最佳實踐 &#x1f680; &#x1f4da; 目錄 ABP vNext Azure Application Insights&#xff1a;APM 監控與性能診斷最佳實踐 &#x1f680;1?? 集成目標與環境要求 2?? 安裝 SDK 與注入服務 3?? 日…

OPENGLPG第九版學習 - 紋理與幀緩存 part1

文章目錄 6.1 紋理綜述6.2 基木紋理類型6.3 創建并初始化紋理代理紋理 6.4 指定紋理數據6.4.1 顯式設置紋理數據將靜態數據載入到紋理對象 6.4.2 從緩存(目標對象GL_PIXEL_UNPACK_BUFFER)中加載紋理6.4.3 從文件加載圖像(DDS為例)讀取一個圖像文件并返回內存中的紋素數據將紋素…

誰來定義未來座艙?新一代車載顯示「C位」之戰開啟

在汽車智能網聯化轉型過程中&#xff0c;車載顯示屏幕作為人車交互的重要載體&#xff0c;已經站上了迅猛發展的新起點。 一方面&#xff0c;伴隨著汽車智能化的加速滲透與發展&#xff0c;傳統中控屏與儀表顯示屏的單一顯示模式已經難以匹配智能化交互需求&#xff0c;車載顯…

基于JavaScript的MQTT實時通信應用開發指南

MQTT 協議入門與實踐&#xff1a;使用 JavaScript 構建實時通信應用 1. 什么是 MQTT&#xff1f; MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一種輕量級的 發布/訂閱&#xff08;Pub-Sub&#xff09; 消息協議&#xff0c;專為低帶寬、高延遲或不穩…

React 19中如何向Vue那樣自定義狀態和方法暴露給父組件。

文章目錄 前言一、什么是 useImperativeHandle&#xff1f;1.1 為什么需要 useImperativeHandle&#xff1f;1.2 基本語法 二、useImperativeHandle 的常見用法3.1 暴露自定義方法3.2子組件封裝的彈窗關閉方法暴露給外部 注意點&#xff1a;總結 前言 在 React 的函數組件中&a…

Windows定時關機工具

自己設計了一款簡單易用的windows定時關機工具&#xff0c;使用簡單&#xff0c;使用只需兩步&#xff1a; 1、輸入設定的時間 2、點擊開始計時 Ps: 1、文章頂部直接下載exe文件 2、文件設置不了免費下載&#xff0c;只能用云盤&#xff1a;定時關機工具.exe - 藍奏云。 w…

楓清科技受邀參加2025數據智能大會

近日&#xff0c;由中國通信標準化協會主辦&#xff0c;中國信通院、大數據技術標準推進委員會(CCSA TC601)承辦的“2025數據智能大會”在北京隆重召開&#xff0c;本屆大會以“Data X AI&#xff0c;數據燃動智能”為主題&#xff0c;聚焦央國企數智化轉型、下一代數據治理、數…

黑馬頭條-數據管理平臺

目錄 項目介紹 功能 項目準備 技術 驗證碼 驗證碼登錄 驗證碼登錄-流程 關于token token的介紹 token的使用 個人信息設置 個人信息設置和axios請求攔截器 axios響應攔截器和身份驗證失敗 優化-axios響應結果 發布文章 發布文章-富文本編輯器 發布文章-頻道列…

Pytorch3D 中涉及的知識點匯總

PyTorch3D 是 Facebook&#xff08;現 Meta&#xff09;AI 研究院&#xff08;FAIR&#xff09;推出的一個基于 PyTorch 的三維計算庫&#xff0c;主要用于 3D 計算機視覺與圖形學任務&#xff0c;如 3D 重建、渲染、點云處理、網格操作等。 下面是對 PyTorch3D 中重要涉及知識…

XML在線格式化工具

XML格式化 免費在線XML格式化與壓縮工具&#xff0c;一鍵美化、校驗、壓縮和優化您的XML代碼。支持自定義縮進、節點折疊&#xff0c;提升可讀性&#xff0c;減小文件體積&#xff0c;加速數據傳輸。 https://toolshu.com/xml 本工具是一款專為處理XML&#xff08;可擴展標記…

【軟件系統架構】系列四:嵌入式技術

目錄 一、嵌入式系統組成 (1)嵌入式處理器 (2)支撐硬件 (3)嵌入式操作系統 (4)支撐軟件 (5)應用軟件 二、嵌入式系統特性 三、嵌入式系統分類與分層結構 1.分類 2.嵌入式軟件的五層架構深入解析 (1)硬件層(Hardware Layer) (2)抽象層(Hardware Ab…

監管報送面試回答思路和示例

在銀行監管報送崗位的面試中&#xff0c;回答問題時需要展現出你的專業知識、實際操作經驗、問題解決能力以及對監管合規的重視。以下是對各類問題的回答思路和示例&#xff1a; 一、專業知識類問題 1. 請簡述銀行監管報送的主要類型和報送頻率 回答思路&#xff1a;分類介紹…

音視頻SDK架構演進的實踐與思考

“不是每一行代碼都值得驕傲&#xff0c;但每一次迭代&#xff0c;都是一次更接近極致的嘗試。” 從最初的數千行代碼、到如今跨平臺、全功能、穩定可靠的直播技術基座&#xff0c;大牛直播SDK走過了整整十年。十年&#xff0c;既是時間的刻度&#xff0c;更是技術沉淀與產品信…

vue.config.js配置學習

1.部署應用包時的基本 URL (baseUrl或publicPath) baseUrl在vue-cli 3.3 時棄用了&#xff0c;自此之后使用publicPath 默認&#xff1a;/ module.exports {// baseUrl:"/",publicPath: ./, ) 2.打包時輸出的文件位置&#xff1a;outputDir 默認: dist module.…