js(Dom+Bom)第五天(2)

webAPI

01-事件監聽

  • 為什么要學事件監聽

    之前給元素注冊事件的時候,同一個事件會被覆蓋掉
    
  • 事件監聽的本質

    通過另外一種方式給元素注冊事件, 同時可以解決同一個事件不會被覆蓋掉.
    
  1. 知識點-通過 on 方式給元素注冊事件

    之前注冊事件的方式:事件源.onclick = function() {}on是一種方式
    click 才是一個具體的事件類型特點:
    1.無法給同一個事件源注冊同一種事件類型,后面的事件會將前面的事件覆蓋掉.
    2.對象身上有onclick這個屬性, 當給onclick這個屬性賦值的時候,屬性原來的值會被覆蓋掉
    
  2. 知識點-通過addEventListener方式注冊事件

    • 語法

      事件源.addEventListener('事件類型', 函數處理程序);注意事項:
      1. 事件類型是不能代 'on'  例如點擊事件:  click
      2. 函數處理程序 可以是一個匿名函數,也可以調用一個命名函數
      3. 第二個參數函數處理程序如果是一個命名函數,那么只寫函數的名稱,不能加小括號(代表函數的調用)例如:
      btn.addEventListener('click', fn);
      function fn() {alert('你好');
      }4. 如果addEventListener想要調用一個帶有參數的函數那么可以按照如下寫法:btn.addEventListener('click', function(){fn(2);
      })function fn(a){alert(a);
      }
      
    • 特點

      • addEventListener 在注冊事件的時候,同一種事件不會被覆蓋掉
      • 原理:將事件添加到一個 eventTarget 對象集合(數組)上
  3. 知識點-通過attachEvent方式注冊事件

    • attachEvent 專門為IE低版本瀏覽器設置的方法

    • 語法

      事件源.attachEvent('事件類型', 處理程序);
      
    • 特點

      • 事件類型需要加 ‘on’
      • 處理程序 與 addEventListener 中的處理程序用法一模一樣
  4. 知識點-移除事件

    • 移除 on 方式注冊事件

      事件源.事件類型 = null;
      例如:div.onclick = null;
      
    • 移除addEventListener事件

      • 語法

        DOM.removeEventListener('事件類型', 命名函數)
        
      • 總結

        1. removeEventListener()這個方法就是用來移除addEventListener注冊的事件
        2. addEventListener注冊事件的時候,必須使用命名函數
        3. removeEventListener()中第二參數命名函數

    在這里插入圖片描述

    • 移除attachEvent事件

      DOM.detachEvent(event_type,event_name)
      
      • 總結:
        1. detachEvent方法是用來移除 attachEvent 事件的
        2. detachEvent()方法中第二個參數也需要一個命名函數
        3. detachEvent方法的使用方式與removeEventListener一樣

在這里插入圖片描述
5. 兼容寫法

var btn = document.getElementById("myBtn");
if (btn.addEventListener) {                   btn.addEventListener("click", myFunction);
} else if (btn.attachEvent) {//兼容寫法btn.attachEvent("onclick", myFunction);
}

02-事件流

在網頁中,如果遇到嵌套的盒子, 那么當點擊子元素的時候, 父元素也會有被點擊的效果  ----> 類似于CSS中的塌陷
  1. 事件流組成

    • 知識點-事件冒泡階段

      以點擊事件舉例:子元素被點了, 父元素也有被點擊的效果  ----> 事件冒泡
      
    • 知識點-事件捕獲階段

      以點擊事件舉例:當前元素被點擊的時候, 先從父元素開始執行, 然后傳到 子元素
      
    • 知識點-事件目標階段

      事件目標階段 : 就是指的是當前事件源
      

    在這里插入圖片描述

    • 事件流總結

      1. 事件流與注冊事件的方式沒有任何關系
      2. 不是所有的事件都有事件冒泡
      3. 如果當前事件有冒泡, 那么通過 addEventListener 可以將冒泡階段和 捕獲階段都可以通過第三參數表現出來 
      4. 如果有事件冒泡, 那么 通過 onclick 這種方式 只能看到冒泡階段, 無法表現捕獲階段(不支持第三個參數)
      
  2. 事件委托

    事件委托: 屬于一種編程實現.
    事件委托: 本應該當前事件源執行對應的事件,但是最后是交給父元素執行的
    
    • 事件委托具備的條件
      • 當前元素得有父元素
      • 當前事件得有冒泡效果
  3. 事件對象參數

    • 什么是事件對象參數

      事件對象參數:  事件中內置的一個參數, 保存了用戶在執行這個事件時候的一些信息比如:
      當前事件的類型, 點擊的對象是誰(真正的事件源是誰).....
      
    • 事件對象參數怎么用

      1. 事件對象參數不需要我們手動的傳值(當執行事件的時候,就會有值)
      2. 事件對象參數本質上就是一個對象

03-事件對象參數

一下的代碼結構可以用此方式查詢:
在這里插入圖片描述

Dom.onclick = function(e){console.log(e);    }

在這里插入圖片描述

  1. e.target : 獲取真正觸發事件的對象(事件源)

  2. e.type: 事件類型

  3. e.clientX | e.clientY (鼠標坐標信息)

    e.clientX :  獲取鼠標的橫坐標相對整個網頁的可視區域
    e.clientY :  獲取鼠標的縱坐標相對整個網頁的可視區域
    
  4. e.pageX | e.pageY (鼠標坐標信息)

    e.pageX:   獲取鼠標的橫坐標相對整個頁面的
    e.pageY:   獲取鼠標的縱坐標相對整個頁面的如果:
    1. 網頁中沒有滾動條, 默認  e.pageX  和 e.clientX
    2. 如果網頁中有滾動條, 那么  e.pageX 就要包含滾動條滾出去的位置
    
  5. e.screenX | e.screenY (鼠標坐標信息)

    e.screenX: 獲取鼠標橫坐標相對整個屏幕的
    e.screenY: 獲取鼠標的縱坐標相對整個屏幕的
    
  6. e.offsetX | e.offsetY (鼠標坐標信息)

    e.offsetX :  獲取鼠標橫坐標相對當前事件源左上角
    e.offsetY:   獲取鼠標縱坐標相對當前事件源左上角
    
  7. e.stopPropagation() 阻止事件冒泡

    e.stopPropagation() 作用: 阻止事件冒泡
    

04-鍵盤事件對象參數

  1. 知識點-onkeydown事件
  2. 知識點-onkeyup事件
  3. 知識點-onkeypress事件
  4. 鍵盤事件對象參數
    • e.key
    • e.keyCode
  5. 課堂案例-鍵盤移動案例

BOM

取鼠標縱坐標相對當前事件源左上角


7. e.stopPropagation() 阻止事件冒泡 ```js
e.stopPropagation() 作用: 阻止事件冒泡

04-鍵盤事件對象參數

  1. 知識點-onkeydown事件
  2. 知識點-onkeyup事件
  3. 知識點-onkeypress事件
  4. 鍵盤事件對象參數
    • e.key
    • e.keyCode
  5. 課堂案例-鍵盤移動案例

BOM

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

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

相關文章

UIAutomator簡介

簡介 Android 4.3發布的時候包含了一種新的測試工具–uiautomator,uiautomator是用來做UI測試的。也就是普通的手工測試,點擊每個控件元素 看看輸出的結果是否符合預期。比如 登陸界面 分別輸入正確和錯誤的用戶名密碼然后點擊登陸按鈕看看是否能否登陸以…

從零開始實現ASP.NET Core MVC的插件式開發(五) - 插件的刪除和升級

標題:從零開始實現ASP.NET Core MVC的插件式開發(五) - 使用AssemblyLoadContext實現插件的升級和刪除 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p/11395828.html 源代碼:https://github.com/lamondlu/Mystique 前景回…

JDBC Druid式link

準備工作:導入包------druid-1.0.9.jar src文件夾下放下druid.properties文件 且其中的url和數據庫名要配置完備 import JdbcUtils.JDBCUtils;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.PseudoColumnUsage;import java.sql…

vs strcore.cpp(156) 內存泄漏

在一個靜態函數的線程回調中,一個cstring的對象沒釋放。 遇到這種問題: 1、查看所有的指針對象,有沒有合適的回收 2、查看代碼的malloc,看看有沒有free 3、一點一點注釋代碼,定位位置 轉載于:https://www.cnblogs.com/…

js(Dom+Bom)第六天(1)

webAPI 01-鍵盤事件 知識點-onkeydown事件[掌握] onkeydown: 當鍵盤上的鍵被按下時候觸發的一個事件知識點-onkeyup事件[掌握] onkeyup: 鍵盤上鍵彈起時候觸發的一個事件知識點-onkeypress事件[了解] onkeypress: 當鍵盤上的鍵被按下時候觸發的事件onkeydown 和 onkeypress的區…

【JavaWeb】石家莊地鐵搭乘系統——第一版(功能尚未完善)

小組成員:高達,程超然 項目目的:能算出地鐵搭乘的最優路線并顯示在地圖上 個人任務:調用隊友寫好的java代碼,將結果顯示在網頁上 新的知識:百度地圖API,使用JQuery的AJAX異步提交 進度&#xff…

掃描槍連接zebra打印機打印條碼標簽無需電腦

在一些流水線生產的現場,需要及時打印條碼標簽,由于現場環境和空間限制,無法擺放電腦或者通過連接電腦來打印條碼標簽的速度太慢, 瑞科條碼特提供了一套掃描槍直接連接條碼打印機,掃描槍掃描條碼之后直接打印輸出條碼標…

簡單的動畫函數封裝(1)

//創建簡單的動畫函數封裝效果(目標對象&#xff0c;目標位置) function animate(obj,target){var id setInterval(function(){if(obj.offsetLeft > target){clearInterval(id);}else{obj.style.left obj.offsetLeft 5 px;}},30) }可以實現如下效果&#xff1a; <div…

NodeMCU學習(三) : 進入網絡世界

閱讀原文可以訪問我的個人博客 把NodeMCU連接到路由器網絡上 NodeMCU可以被配置為Station模式和softAP模式或者Station AP模式&#xff0c;當它被配置為Station模式時&#xff0c;就可以去連接Access Point&#xff08;如路由器&#xff09;。當它被配置為Soft Access Point模…

操作系統原理之進程調度與死鎖(三)

一、進程調度的功能與時機 進程調度&#xff1a;進程調度的功能由操作系統的進程調度程序完成 具體任務&#xff1a;按照某種策略和算法從就緒態進程中為當前空閑的CPU選擇在其上運行的新進程。 進程調度的時機&#xff1a;進程正常或異常結束、進程阻塞、有更高優先級進程到來…

模擬京東側邊欄

思路&#xff1a; // 1. 獲取元素 // 1.1 獲取一組li // 1.2 獲取一組類名為item的div // 1.3 獲取類名為slide的div// 2. 循環遍歷給每一個li注冊onmouseenter&#xff0c;并且每一個li添加一個index表示索引 // 2.1 循環遍歷把所有的li的類名設置為,把所有的item的display設…

ViewPager + TabLayout + Fragment + MediaPlayer的使用

效果圖 在gradle里導包 implementation com.android.support:design:28.0.0 activity_main <?xml version"1.0" encoding"utf-8"?><LinearLayout xmlns:android"http://schemas.android.com/apk/res/android" xmlns:tools"http…

vs code打開文件顯示的中文亂碼

這種情況下&#xff0c;一般是編碼格式導致的&#xff0c;操作辦法&#xff1a; 鼠標點擊之后&#xff0c;上面會彈出這個界面&#xff0c;雙擊選中 然后從UTF-8換到GB2312&#xff0c;或者自己根據情況&#xff0c;更改編碼格式 轉載于:https://www.cnblogs.com/132818Creator…

操作系統原理之內存管理(第四章第一部分)

內存管理的?標&#xff1a;實現內存分配和回收&#xff0c;提高內存空間的利用率和內存的訪問速度 一、存儲器的層次結構 寄存器&#xff1a;在CPU內部有一組CPU寄存器&#xff0c;寄存器是cpu直接訪問和處理的數據&#xff0c;是一個臨時放數據的空間。 高速緩沖區&#xff1…

自寫圖片遮罩層放大功能jquery插件源代碼,photobox.js 1.0版,不兼容IE6

版權聲明&#xff1a;本文為博主原創文章。未經博主同意不得轉載。 https://blog.csdn.net/u010480479/article/details/27362147 阿嚏~~~ 話說本屌絲沒啥開發插件的經驗&#xff0c;可是天公不作美&#xff0c;公司須要讓我自己開發個圖片放大的插件 但公司老大的話&#xff0…

黑白兩客進入頁面(1)

<div><span>歡</span><span>迎</span><span>來</span><span>到</span><span><strong>黑白兩客</strong></span><span>的</span><span>博</span><span>客</sp…

zookeeper學習之原理

一、zookeeper 是什么 Zookeeper是一個分布式協調服務&#xff0c;可用于服務發現&#xff0c;分布式鎖&#xff0c;分布式領導選舉&#xff0c;配置管理等。這一切的基礎&#xff0c;都是Zookeeper提供了一個類似于Linux文件系統的樹形結構&#xff08;可認為是輕量級的內存文…

mysql鎖表查詢和解鎖操作

解除正在死鎖的狀態有兩種方法&#xff1a; 第一種&#xff1a; 1.查詢是否鎖表 show OPEN TABLES where In_use > 0; 2.查詢進程&#xff08;如果您有SUPER權限&#xff0c;您可以看到所有線程。否則&#xff0c;您只能看到您自己的線程&#xff09; show processlist 3.殺…

前端js基礎智能機器人

<script>var flag true;while(flag) {//獲取用戶輸入信息 var code prompt(你好,我是小娜\n請輸入編號或者關鍵詞選擇功能,輸入Q(q)退出聊天\n1.計算\n2.時間\n3.笑話);switch( code ) {case q:case Q:alert(狠心的拋棄了小娜);flag false;break;case 1:case 計算:var…

2018-2019-2 《Java程序設計》第6周學習總結

20175319 2018-2019-2 《Java程序設計》第6周學習總結 教材學習內容總結 本周學習《Java程序設計》第七章和第十章&#xff1a; 內部類&#xff1a; 1.內部類可以使用外嵌類的成員變量和方法。 2.類體中不可以聲明類變量和類方法。 3.內部類僅供外嵌類使用。 4.類聲明可以使用s…