【Javascript Day18】

目錄

標簽事件綁定的屬性參數

阻止默認行為

dialog的實現及組織冒泡(捕獲)傳遞

基于冒泡的事件委托

鍵盤事件的事件源對象信息

JS的自動觸發操作


標簽事件綁定的屬性參數

<!-- 標簽上的事件綁定,事件源對象通過 關鍵字event傳遞 -->
? ? <!-- 標簽上的事件綁定,事件源對象通過 關鍵字this傳遞 -->
? ? <input type="button" value="事件綁定" οnclick="funA(event,this)">
? ? <input type="button" value="事件綁定" id="btn1">
? ? <input type="button" value="事件綁定" id="btn2">
? ? <script>
? ? ? ? function funA(e,dom){
? ? ? ? ? ? console.log(e);
? ? ? ? ? ? // console.log(this);
? ? ? ? ? ? console.log(dom);
? ? ? ? ? ??
? ? ? ? }

? ? ? ? // JS為元素綁定事件,默認只有一個參數,該參數是事件對象
? ? ? ? // JS為元素綁定的事件,在方法中this關鍵字,表示當前事件綁定的DOM對象
? ? ? ? var btnDom1 = document.querySelector("#btn1");
? ? ? ? btnDom1.onclick = function(e){
? ? ? ? ? ? console.log(e);
? ? ? ? ? ? console.log(this);
? ? ? ? }

? ? ? ??

? ? ? ? var btnDom2 = document.querySelector("#btn2");
? ? ? ? btnDom2.addEventListener("click",function(e){
? ? ? ? ? ? console.log(e);
? ? ? ? ? ? console.log(this);
? ? ? ? })

阻止默認行為


<!--
? ? ?默認行為:標簽在不使用任何JS代碼的情況下,就存在功能?
? ? ?阻止默認行為:讓標簽自帶的功能失效
? ? ?-->
? ? <a href="https://www.baidu.com" οnclick="showTip()">百度</a>
? ? <script>
? ? ? ? function showTip(){
? ? ? ? ? ? alert(1)
? ? ? ? }
? ? </script>
? ? <hr>
? ? <a href="javascript:void(0)">為元素默認行為關鍵屬性取值 javascrip:void(0)</a>
? ? <hr>
? ? <a href="https://www.baidu.com" οnclick="return false">為元素默認行為對應事件,綁定return false</a>
? ? <hr>
? ? <a href="https://www.baidu.com" οnclick="printMsg(event)">為元素默認行為對應事件回調,通過事件對象的preventDefault() 代碼</a>
? ? <script>
? ? ? ? function printMsg(e){
? ? ? ? ? ? console.log("msg",e);
? ? ? ? ? ? e.preventDefault();
? ? ? ? }
? ? </script>

dialog的實現及組織冒泡(捕獲)傳遞

<input type="button" value="頁面的操作" οnclick="showTip()">
? ? <input type="button" value="打開彈窗" οnclick="openDialog()">

? ? <div class="dialog" id="a" οnclick="closeDialog(event)">
? ? ? ? <div class="content" οnclick="stopFun(event)">
? ? ? ? ? ? <input type="text">
? ? ? ? ? ? <input type="button" value="關閉" οnclick="closeDialog(event)">
? ? ? ? </div>
? ? </div>

? ? <script>
? ? ? ? function showTip(){
? ? ? ? ? ? alert(11)
? ? ? ? }
? ? ? ? var aDialog = document.querySelector("#a");
? ? ? ? function openDialog(){
? ? ? ? ? ? aDialog.style.display = "block";
? ? ? ? }
? ? ? ? function stopFun(e){
? ? ? ? ? ? // 方案2:使用事件對象的專用阻止冒泡(捕獲)方法完成回調執行停止操作 stopPropagation()
? ? ? ? ? ? // ? ? ? stopPropagation()表示將冒泡或者捕獲方法停止在當前方法上
? ? ? ? ? ? e.stopPropagation();
? ? ? ? }
? ? ? ? function closeDialog(e){
? ? ? ? ? ? console.log(e);
? ? ? ? ? ? // 方案1:限定關閉功能只能由綁定事件的元素自身完成
? ? ? ? ? ? // if(e.currentTarget===e.target){
? ? ? ? ? ? // ? ? aDialog.style.display = "none";
? ? ? ? ? ? // }
? ? ? ? ? ? // e.stopPropagation();
? ? ? ? ? ? aDialog.style.display = "none";
? ? ? ? }
? ? </script>

基于冒泡的事件委托

<input type="button" value="addItems" οnclick="addItems()">
? ? <ul id="list" οnclick="execUlFun(event)">
? ? ? ??
? ? </ul>
? ? <script>
? ? ? ? // 事件代理|事件委托
? ? ? ? // ? ? ?將多個子元素的事件基于事件冒泡機制,交給父元素綁定并完成執行
? ? ? ? // ? ? ?優點:減少資源占用->提高運行效率
? ? ? ? // ? ? ?缺點:功能邏輯會比較復雜
? ? ? ? var tagNames = ["LI","SPAN"]
? ? ? ? function execUlFun(e){
? ? ? ? ? ? // console.log("ul的點擊事件",e.target,e.currentTarget);
? ? ? ? ? ? console.log("ul的點擊事件-DOM對象",e.target);
? ? ? ? ? ? // console.dir(e.target)
? ? ? ? ? ? // if(e.target.tagName=="LI"){
? ? ? ? ? ? // ? ? console.log("ul的點擊事件-內容",e.target.innerHTML);
? ? ? ? ? ? // }
? ? ? ? ? ? if( tagNames.includes(e.target.tagName) ){
? ? ? ? ? ? ? ? // console.log("ul的點擊事件-內容",e.target.innerHTML);
? ? ? ? ? ? ? ? // 具體的業務邏輯需要具體的分析
? ? ? ? ? ? ? ? console.log("ul的點擊事件-內容",e.target.innerText,e.target,e);
? ? ? ? ? ? }

? ? ? ? }

? ? ? ? var ulDom = document.querySelector("#list");
? ? ? ? function addItems(){
? ? ? ? ? ? for (var i = 0; i < 10; i++) {
? ? ? ? ? ? ? ? var li = document.createElement("li");
? ? ? ? ? ? ? ? li.classList.add( "item" );
? ? ? ? ? ? ? ? var span = document.createElement("span");
? ? ? ? ? ? ? ? let text = Math.random();
? ? ? ? ? ? ? ? span.innerHTML = text
? ? ? ? ? ? ? ? li.appendChild(span);
? ? ? ? ? ? ? ? // JS規則中每個元素綁定的事件,都是需要瀏覽器進行實際功能的監聽的
? ? ? ? ? ? ? ? // li.onclick = function(){
? ? ? ? ? ? ? ? // ? ? console.log(text,this);
? ? ? ? ? ? ? ? // }
? ? ? ? ? ? ? ? ulDom.appendChild(li);
? ? ? ? ? ? }
? ? ? ? }
? ? </script>

鍵盤事件的事件源對象信息

?<!--?
? ? ? ? onkeypress 被棄用,目前新版本空格鍵數值鍵可以用
? ? ? ? ? ? ? ? ? ? ? ? ? 輸入法無法觸發
? ? -->
? ? <input type="text" οnkeydοwn="downFun()" οnkeypress="pressFun()" οnkeyup="upFun()">
? ? <script>
? ? ? ? function downFun(){
? ? ? ? ? ? console.log("被按下down");
? ? ? ? }
? ? ? ? function pressFun(){
? ? ? ? ? ? console.log("被按下press");
? ? ? ? }
? ? ? ? function upFun(){
? ? ? ? ? ? console.log("彈起up");
? ? ? ? }
? ? </script>

? ? <hr>
? ? <!--?
? ? ? ? 融合事件:有兩個或以上的事件行為組成的事件
? ? ? ? ? ? + click : 左鍵按下和左鍵彈起
? ? ? ? ? ? + input : 鍵盤按下和鍵盤彈起
? ? -->
? ? <input type="text" οninput="inputUserWord()">
? ? <script>
? ? ? ? function inputUserWord(){
? ? ? ? ? ? console.log("有值輸入");
? ? ? ? }
? ? </script>

? ? <hr>
? ? <!--?
? ? 鍵盤事件的三種場景
? ? ? ? 1. 為可接收輸入值的元素完成綁定 - 直接可以使用
? ? ? ? 2. 為不可接收輸入值的元素定義contenteditable屬性,開啟輸入功能,并完成鍵盤事件綁定
? ? ? ? 3. 直接為window對象綁定鍵盤事件,只要是在當前頁面中執行就會觸發
? ? -->
? ? <textarea οnkeydοwn="printEvent(event)"></textarea>
? ? <script>
? ? ? ? function printEvent(e){
? ? ? ? ? ? console.log(e);
? ? ? ? ? ? // 按鍵內容
? ? ? ? ? ? console.log(e.key);
? ? ? ? ? ? // 按鍵內容的ASCII編碼 - 棄用
? ? ? ? ? ? console.log(e.keyCode);
? ? ? ? }
? ? </script>
? ? <div class="box" οnkeydοwn="printKey(event)" contenteditable></div>
? ? <script>
? ? ? ? function printKey(e){
? ? ? ? ? ? console.log(e);
? ? ? ? ? ? console.log(e.key);
? ? ? ? }
? ? </script>
? ? <hr>
? ? <script>
? ? ? ? window.onkeydown = function(){
? ? ? ? ? ? console.log("window監控");
? ? ? ? }
? ? </script>


JS的自動觸發操作

<h1 id="count">0</h1>
? ? <input id="btn" type="button" value="累加" οnclick="addCount()">
? ? <script>
? ? ? ? var count = 0;
? ? ? ? var h1Dom = document.querySelector("#count");
? ? ? ? h1Dom.innerHTML = count;

? ? ? ? function addCount(){
? ? ? ? ? ? console.log("addCount");
? ? ? ? ? ? count++;
? ? ? ? ? ? h1Dom.innerHTML = count;
? ? ? ? }

? ? ? ? // js為dom對象的所有事件,都提供一個同名的觸發方法,該方法只要被調用,會立即執行事件對應的函數
? ? ? ? var btnDom = document.querySelector("#btn");
? ? ? ? // 自動調用 點擊功能
? ? ? ? // btnDom.click();

? ? ? ? // 延遲計時器
? ? ? ? // setInterval( fun,time-ms );
? ? ? ? // ? ? ?每過time時間長度,自動執行一次 fun 方法
? ? ? ? setInterval( function(){
? ? ? ? ? ? btnDom.click();
? ? ? ? },500 )
? ? </script>

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

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

相關文章

解鎖機器學習核心算法 | 支持向量機:機器學習中的分類利刃

一、引言 在機器學習的龐大算法體系中&#xff0c;有十種算法被廣泛認為是最具代表性和實用性的&#xff0c;它們猶如機器學習領域的 “十大神器”&#xff0c;各自發揮著獨特的作用。這十大算法包括線性回歸、邏輯回歸、決策樹、隨機森林、K - 近鄰算法、K - 平均算法、支持向…

玩客云 IP查找

1.玩客云使用靜態IP在不同網段路由器下不能使用&#xff0c;動態不好找IP地址 1.1使用python3 實現自動獲取發送 import requests import os import socket# 從環境變量獲取 PushPlus 的 token 和群組編碼 PUSH_PLUS_TOKEN os.getenv("PUSH_PLUS_TOKEN") PUSH_PLU…

Linux(Centos 7.6)命令詳解:cat

1.命令作用 將文件或標準輸入連接到標準輸出(Concatenate FILE(s), or standard input, to standard output)&#xff0c; 即將文件內容輸出到屏幕上&#xff0c;或者將多個文件合并成一個文件。 2.命令語法 Usage: cat [OPTION]... [FILE]... 3.參數詳解 OPTION: -A, -…

深入解析Qt事件循環

在Qt開發中&#xff0c;QApplication::exec()這行代碼是每個開發者都熟悉的“魔法咒語”。為什么GUI程序必須調用它才能響應操作&#xff1f;為何耗時操作會導致界面凍結&#xff1f;本文將以事件循環為核心&#xff0c;揭示Qt高效運轉的底層邏輯&#xff0c;探討其設計哲學與最…

Hive增量遷移方案與實操PB級

客戶一共1PB數據&#xff0c;每天新增10T&#xff0c;有些表只保留3天。 需要客戶提供&#xff1a; a.tbl_size(大小GB) a.last_mtime(最新更新時間) a.tbl_ttl(保留時間) b.last_part_dt(分區值) b.last_part_size(最新分區大小) t_day(表更新規律,t幾) 因為目前…

未來游戲:當人工智能重構虛擬世界的底層邏輯

未來游戲&#xff1a;當人工智能重構虛擬世界的底層邏輯 在《賽博朋克2077》夜之城的霓虹燈下&#xff0c;玩家或許已經注意到酒吧里NPC開始出現微表情變化&#xff1b;在《艾爾登法環》的開放世界中&#xff0c;敵人的戰術包抄逐漸顯露出類人智慧。這些細節預示著游戲產業正站…

React中如何處理高階組件中的錯誤

在 React 高階組件中處理錯誤是確保應用程序健壯性和穩定性的重要環節。以下是一些處理高階組件中錯誤的常見方法&#xff1a; 1. 捕獲渲染時的錯誤 在高階組件中&#xff0c;渲染過程可能會因為各種原因&#xff08;如 props 數據格式錯誤、組件內部邏輯異常等&#xff09;拋…

deepseek-v3在阿里云和騰訊云的使用中的差異

隨著deepseek在各大云商上線&#xff0c;試用了下阿里云和騰訊云的deepseek服務&#xff0c;在回答經典數學問題9.9和9.11誰大時&#xff0c;發現還是有差異的。將相關的問題記錄如下。 1、問題表現 筆者使用的openai的官方sdk go-openai。 因本文中測驗主要使用阿里云和騰訊…

寶塔面板開始ssl后,使用域名訪問不了后臺管理

寶塔面板后臺開啟ssl訪問后&#xff0c;用的證書是其他第三方頒發的證書 再使用 域名/xxx 的形式&#xff1a;https://域名:xxx/xxx 訪問后臺&#xff0c;結果出現如下&#xff0c;不管使用 http 還是 https 的路徑訪問都進不后臺管理 這個時候可以使用 https://ip/xxx 的方式來…

開發板部署|RK3588部署DeepSeek-1.5B

前言 在 RK3588 上部署大模型可以顯著提升計算效率、節能、加速推理過程&#xff0c;并實現本地化推理&#xff0c;適合各種邊緣計算應用&#xff0c;如智能設備、自動駕駛、工業機器人、健康監測等領域。此外&#xff0c;RK3588 配備了強大的 NPU&#xff08;神經網絡處理單元…

UDP與TCP

用UDP一定比用TCP快嗎&#xff1f; 假設我們需要在a電腦的進程發一段數據到b電腦的進程我們可以選擇使用TCP或UDP協議進行通信。 對于TCP這樣的可靠性協議每次消息發出后都能明確知道對方有沒有收到&#xff0c;就像打電話一樣&#xff0c;只要“喂喂"兩下對方就能回你個…

【ELK】【Elasticsearch】數據查詢方式

1. 簡單查詢&#xff08;URI Search&#xff09; 通過 URL 參數直接進行查詢&#xff0c;適合簡單的搜索場景。 示例&#xff1a; bash 復制 GET /index_name/_search?qfield_name:search_value 說明&#xff1a; index_name&#xff1a;索引名稱。 field_name&#xf…

軟件測試:定義和實質

軟件缺陷的定義&#xff1a; 未實現說明書要求的功能出現了說明書指明不應出現的錯誤實現了說明書未提到的功能未實現說明書沒有明確提出但應該實現的目標軟件難以理解&#xff0c;不易使用&#xff0c;運行緩慢 或者從測試員客戶會認為不好的。 軟件缺陷的原因&#xff1a; …

【軟考】【2025年系統分析師拿證之路】【啃書】第十一章 軟件需求工程(十二)

目錄 需求的層次需求工程的主要活動需求的記錄技術需求分析需求定義 需求的層次 業務需求用戶需求系統需求 需求工程的主要活動 需求獲取需求分析形成需求規格需求確認和驗證需求管理 需求的記錄技術 任務卡片場景說明用戶故事 需求分析 方法&#xff1a; 結構化分析&a…

計算機網絡原理試題六

一、單項選擇 1.(單選題,5分)IP地址中網絡號的作用有 A.指定了設備能夠進行通信的網絡 B.指定了主機所屬的網絡 C.指定了被尋址的子網中的某個節點 D.標志了網絡中的主機 答案:B 2.(單選題,5分)關于IP主機地址,下列說法正確的是 A.網段部分不可以全1也不可以全0 B.主機部分可…

路由基礎 | 路由引入實驗 | 不同路由引入方式存在的問題

注&#xff1a;本文為 “路由基礎 | 路由表 | 路由引入” 相關文章合輯。 未整理去重。 路由基本概念 1—— 路由表信息、路由進表以及轉發流程、最長掩碼匹配原則 靜下心來敲木魚已于 2023-11-26 14:06:22 修改 什么是路由 路由就是指導報文轉發的路徑信息&#xff0c;可以…

更高效實用 vscode 的常用設置

VSCode 可以說是文本編輯神器, 不止程序員使用, 普通人用其作為文本編輯工具, 更是效率翻倍. 這里分享博主對于 VSCode 的好用設置, 讓 VSCode 如虎添翼 進入設置 首先進入設置界面, 后續都在這里進行配置修改 具體設置 每項配置通過搜索關鍵字, 來快速定位配置項 自動保存…

本地部署DeepSeek

1、下載ollama 瀏覽器輸入ollama&#xff0c;打開ollama網站&#xff0c;選擇版本下載 可以使用迅雷下載 打開迅雷&#xff0c;復制網址 2、安裝ollama ollama下載完成之后&#xff0c;安裝 3、查看ollama版本 Win R&#xff0c;cmd ollama -v 查看ollama版本 4、下載De…

大模型驅動的業務自動化

大模型輸出token的速度太低且為統計輸出&#xff0c;所以目前大模型主要應用在toP&#xff08;人&#xff09;的相關領域&#xff1b;但其智能方面的優勢又是如此的強大&#xff0c;自然就需要嘗試如何將其應用到更加廣泛的toM&#xff08;物理系統、生產系統&#xff09;領域中…

Leetcode1299:將每個元素替換為右側最大元素

題目描述&#xff1a; 給你一個數組 arr &#xff0c;請你將每個元素用它右邊最大的元素替換&#xff0c;如果是最后一個元素&#xff0c;用 -1 替換。 完成所有替換操作后&#xff0c;請你返回這個數組。 代碼思路&#xff1a; 方法 replaceElements 輸入參數&#xff1a;…