Jadual Kandungan
二、事件绑定模型" >二、事件绑定模型
Rumah hujung hadapan web tutorial js 如何使用JS事件绑定、事件流模型

如何使用JS事件绑定、事件流模型

May 30, 2018 am 10:49 AM
javascript peristiwa mengikat

这次给大家带来如何使用JS事件绑定、事件流模型,使用JS事件绑定、事件流模型的注意事项有哪些,下面就是实战案例,一起来看一下。

 一、JS事件

(一)JS事件分类

1.鼠标事件:

click/dbclick/mouseover/mouseout

2.HTML事件:

 onload/onunload/onsubmit/onresize/onchange/onfoucs/onscroll

3.键盘事件:

 keydown:键盘按下时触发
 keypress:键盘按下并抬起的瞬间触发。
 keyup:键盘抬起触发

[注意事项]

①执行顺序:keydown keypress keyup
②keypress只能捕获数字,字母,符号键,而不能捕获功能键。
③长按时循环执行keydown--keypress
④有keydown,并不一定有keyup,当长按时焦点失去,将不再触发keyup
⑤keypress区分大小写,keydown,kewup不区分。

4.事件因子:

当触发一个事件时,该事件将向事件所调用的函数中,默认传入一个参数,

这个参数就是一个事件因子,包含了该事件的各种详细信息。

 document.onkeydown=function(e){
 console.log(e);
 }
document.onkeydown=function(){
console.log(window.event);
}
Salin selepas log masuk
//兼容浏览器的写法:
document.onkeydown=function(e){
e==e||Window.event;
var Code=e.keyCode||e.which||e.charCode;
if(code==13){
//回车
}
}
Salin selepas log masuk

5.如何确定键盘按键?

①再出发的函数中,接收事件因子e。
②可以使用e.key直接去到按下的按键字符(不推荐使用)。
③一次可以使用keyCode/which/charCode取到按键的ASCII码值。

(兼容各种浏览器的写法)

 var Code=e.keyCode||e.which||e.charCode;
//判断组合键
var isAlt=0,isEnt=0;
document.onkeyup=function(e){
if(e.keyCode==18){
isAlt=1;
}      
if(e.keyCode==13){
isEnt=1;
}    
if(isAlt==1&&isEnt==1){
alert("同时按下Alt和Enter键");
}
}
document.onkeyup=function(){
console.log("keyup");
}
document.onkeypress=function(){
console.log("keypress");
}
document.onkeydown=function(){
console.log("keydown");
}
document.onkeypress=function(){
console.log(window.event);
}
//判断是否按下了回车键
document.onkeydown=function(e){
var code=e.keyCode;
if(code==13){
alert("你输入的是回车键");
}
}
Salin selepas log masuk

二、事件绑定模型

(一)DOM0事件模型

绑定注意事项:

①使用window.onload加载完成后进行绑定。

window.onload =function(){//事件}

②放在body后面进行绑定。

//body内容
<body>
  <button onclick="func()">内联模型绑定</button>
  <button id="btn1">哈哈哈哈</button>
  <button id="btn2">DOM2模型绑定</button>
  <button id="btn3">取消DOM2</button>
</body>
Salin selepas log masuk

1.内联模型(行内绑定):将函数名直接作为html标签中属性的属性值。

<button onclick="func()">内联模型绑定</button>
Salin selepas log masuk

 缺点:不符合w3c中关于内容与 行为分离的基本规范。

2.脚本模型(动态绑定):通过在JS中选中某个节点,然后给节点添加onclick属性。

document.getElementById("btn1")=function(){}
Salin selepas log masuk

 优点:符合w3c中关于内容与行为分离的基本规范,实现html与js的分离。
 缺点:同一个节点只能添加一次同类型事件,如果添加多次,最后一个生效。

document.getElementById("btn1").onclick=function(){
  alert(1234);  
}
document.getElementById("btn1").onclick=function(){
  alert(234);  
}//重复的只能出现最近的一次
Salin selepas log masuk

3.DOM0共有缺点:通过DOM0绑定的事件,一旦绑定将无法取消。

document.getElementById("btn3").onclick=function(){//不能取消匿名函数
  if(btn.detachEvent){
    btn.detachEvent("onclick",func1);
  }else{
    btn.removeEventListener("click",func1);
  }
    alert("取消DOM2");
}
Salin selepas log masuk

(二)DOM2事件模型

1.添加DOM2事件绑定:

 ①IE8之前,使用.attachEvent("onclick",函数);
 ②IE8之后,使用.addEventListener("click",函数,true/false);
 参数三:false(默认)表示事件冒泡,传入true表示事件捕获。
 ③兼容所有浏览器的处理方式:

 var btn=document.getElementById("btn1");
 if(btn.attachEvent){
 btn.attachEvent("onclick",func1);//事件,事件需要执行的函数IE8可以
 }else{
 btn.attachEventListener("click",func1);
 }
Salin selepas log masuk

2.DOM2绑定的优点:

 ①同一个节点,可以使用DOM2绑定多个同类型事件。
 ②使用DOM2绑定的事件,可以有专门的函数进行取消。
3.取消事件绑定:
 ①使用attachEvent绑定,要用detachevent取消。
 ②使用attachEventListener绑定,要用removeEventListenter取消。
 注意:如果DOM2绑定的事件,需要取消,则绑定事件时,回调函数必须是函数名,
 而不能是匿名函数,因为取消事件时,取消传入函数名进行取消。

三、JS事件流模型

(一)JS中的事件流模型

1. 事件冒泡(fasle/不写):当触发一个节点的事件是,会从当前节点开始,依次触发其祖先节点的同类型事件,直到DOM根节点。
2. 事件捕获(true):当初发一个节点的事件时,会从DOM根节点开始,依次触发其祖先节点的同类型事件,直到当前节点自身。
3. 什么时候事件冒泡?什么时候事件捕获?
 ① 当使用addEventListener绑定事件,第三个参数传为true时表示事件捕获;
 ② 除此之外的所有事件绑定均为事件冒泡。

4. 阻止事件冒泡:

 ① IE10之前,e.cancelBubble = true;
 ② IE10之后,e.stopPropagation();

5. 阻止默认事件:

 ① IE10之前:e.returnValue = false;
 ② IE10之后:e.preventDefault();

//css
#p1{
  width: 300px;;
  height: 300px;
  background-color: powderblue;
}
#p2{
  width: 200px;
  height: 200px;
  background-color: deeppink;
}
#p3{
  width: 100px;
  height: 100px;
  background-color:#A9A9A9;
}
//html
<p id="p1">
  <p id="p2">
    <p id="p3"></p>
  </p>
</p>
<a href="01-事件笔记.html" rel="external nofollow" onclick="func()">超链接</a>
p1.addEventListener("click",function(){
  console.log("p1 click");
},false);
p2.addEventListener("click",function(){
  console.log("p2 click");
},false);
p3.addEventListener("click",function(){ //原来的顺序是:3-->2-->1。
//  myParagraphEventHandler(); //截获事件流后,只触发3.但是从2开始依然会冒泡;
  console.log("p3 click");
},false);
Salin selepas log masuk

结果(事件冒泡)(由小到大p3-》p2-》p1):

p1.addEventListener("click",function(){
  console.log("p1 click");
},true);
p2.addEventListener("click",function(){
  console.log("p2 click");
},true);
p3.addEventListener("click",function(){ 
//  myParagraphEventHandler(); //截获事件流后,只触发3.但是从2开始依然会冒泡;
  console.log("p3 click");
},true);
Salin selepas log masuk

结果(事件捕获)(由小到大p3-》p2-》p1):

//依然遵循事件冒泡
document.onclick=function(){
  console.log("document click")
}
//截获事件流阻止事件冒泡
function myParagraphEventHandler(e) {
   e = e || window.event;
  if (e.stopPropagation) {
     e.stopPropagation(); //IE10以后 
  } else {
     e.cancelBubble = true; //IE10之前
   }
}
//截获事件流阻止事件冒泡
function myParagraphEventHandler(e) {
   e = e || window.event;
  if (e.stopPropagation) {
     e.stopPropagation(); //IE10以后 
  } else {
     e.cancelBubble = true; //IE10之前
   }
}
//阻止默认事件
function eventHandler(e) {
  e = e || window.event;
// 防止默认行为 
   if (e.preventDefault) {
     e.preventDefault(); //IE10之后
  } else {
     e.returnValue = false; //IE10之前  
  }
}
Salin selepas log masuk

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

如何操作angular6中使用less

怎样优化js async函数

Atas ialah kandungan terperinci 如何使用JS事件绑定、事件流模型. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Tutorial BTCC: Bagaimana untuk mengikat dan menggunakan dompet MetaMask pada pertukaran BTCC? Tutorial BTCC: Bagaimana untuk mengikat dan menggunakan dompet MetaMask pada pertukaran BTCC? Apr 26, 2024 am 09:40 AM

MetaMask (juga dipanggil Little Fox Wallet dalam bahasa Cina) ialah perisian dompet penyulitan percuma dan diterima baik. Pada masa ini, BTCC menyokong pengikatan pada dompet MetaMask Selepas mengikat, anda boleh menggunakan dompet MetaMask untuk log masuk dengan cepat, menyimpan nilai, membeli syiling, dsb., dan anda juga boleh mendapatkan bonus percubaan 20 USDT untuk pengikatan pertama. Dalam tutorial dompet BTCCMetaMask, kami akan memperkenalkan secara terperinci cara mendaftar dan menggunakan MetaMask, dan cara mengikat dan menggunakan dompet Little Fox dalam BTCC. Apakah dompet MetaMask? Dengan lebih 30 juta pengguna, MetaMask Little Fox Wallet ialah salah satu dompet mata wang kripto yang paling popular hari ini. Ia percuma untuk digunakan dan boleh dipasang pada rangkaian sebagai sambungan

Bagaimana untuk mengikat sub-akaun pada Xiaohongshu? Bagaimanakah ia menyemak sama ada akaun itu normal? Bagaimana untuk mengikat sub-akaun pada Xiaohongshu? Bagaimanakah ia menyemak sama ada akaun itu normal? Mar 21, 2024 pm 10:11 PM

Dalam era ledakan maklumat hari ini, pembinaan jenama peribadi dan imej korporat telah menjadi semakin penting. Sebagai platform perkongsian kehidupan fesyen terkemuka di China, Xiaohongshu telah menarik sejumlah besar perhatian dan penyertaan pengguna. Bagi pengguna yang ingin mengembangkan pengaruh mereka dan meningkatkan kecekapan penyebaran kandungan, sub-akaun yang mengikat telah menjadi cara yang berkesan. Jadi, bagaimanakah Xiaohongshu mengikat sub-akaun? Bagaimana untuk menyemak sama ada akaun itu normal? Artikel ini akan menjawab soalan-soalan ini untuk anda secara terperinci. 1. Bagaimana untuk mengikat sub-akaun pada Xiaohongshu? 1. Log masuk ke akaun utama anda: Pertama, anda perlu log masuk ke akaun utama Xiaohongshu anda. 2. Buka menu tetapan: klik "Saya" di penjuru kanan sebelah atas, dan kemudian pilih "Tetapan". 3. Masukkan pengurusan akaun: Dalam menu tetapan, cari pilihan "Pengurusan Akaun" atau "Pembantu Akaun" dan klik

Langkah dan kaedah untuk mengikat Douyin dalam Toutiao Langkah dan kaedah untuk mengikat Douyin dalam Toutiao Mar 22, 2024 pm 05:56 PM

1. Buka Toutiao. 2. Klik Saya di penjuru kanan sebelah bawah. 3. Klik [System Settings]. 4. Klik [Tetapan Akaun dan Privasi]. 5. Klik butang di sebelah kanan [Douyin] untuk mengikat Douyin.

Bagaimana untuk mengikat apl Cainiao ke Pinduoduo? Bagaimana untuk menambah Cainiao Wrap ke platform Pinduoduo? Bagaimana untuk mengikat apl Cainiao ke Pinduoduo? Bagaimana untuk menambah Cainiao Wrap ke platform Pinduoduo? Mar 19, 2024 pm 02:30 PM

Aplikasi Cainiao ialah platform yang boleh memberikan anda pelbagai maklumat logistik Fungsi di sini sangat berkuasa dan mudah digunakan Jika anda mempunyai sebarang masalah berkaitan logistik, ia boleh diselesaikan di sini -perkhidmatan berhenti boleh menyelesaikan segala-galanya dalam masa Menyemak penghantaran ekspres, mengambil penghantaran ekspres, dan lain-lain semuanya tanpa sebarang masalah. Kami telah bekerjasama dengan pelbagai platform dan semua maklumat boleh ditanya Mungkin berlaku bahawa barang yang dibeli di Pinduoduo tidak dapat memaparkan maklumat logistik Sebenarnya, anda perlu mengikat Pinduoduo secara manual untuk mencapai ini. Cara mengikat Cainiao ke akaun Pinduoduo: 1. Buka APP Cainiao dan pergi ke halaman utama

Tutorial JavaScript Mudah: Cara Mendapatkan Kod Status HTTP Tutorial JavaScript Mudah: Cara Mendapatkan Kod Status HTTP Jan 05, 2024 pm 06:08 PM

Tutorial JavaScript: Bagaimana untuk mendapatkan kod status HTTP, contoh kod khusus diperlukan: Dalam pembangunan web, interaksi data dengan pelayan sering terlibat. Apabila berkomunikasi dengan pelayan, kami selalunya perlu mendapatkan kod status HTTP yang dikembalikan untuk menentukan sama ada operasi itu berjaya dan melaksanakan pemprosesan yang sepadan berdasarkan kod status yang berbeza. Artikel ini akan mengajar anda cara menggunakan JavaScript untuk mendapatkan kod status HTTP dan menyediakan beberapa contoh kod praktikal. Menggunakan XMLHttpRequest

Bagaimana untuk mengikat APP Cainiao kepada Pinduoduo Bagaimana untuk mengikat APP Cainiao kepada Pinduoduo Bagaimana untuk mengikat APP Cainiao kepada Pinduoduo Bagaimana untuk mengikat APP Cainiao kepada Pinduoduo Mar 19, 2024 pm 05:16 PM

Adakah anda tahu cara mengikat Pinduoduo apabila menggunakan Cainiao Wrap App versi rasmi Cainiao Wrap tidak menyegerakkan beberapa maklumat logistik Pinduoduo pada platform ini. Apa yang perlu kami lakukan ialah Anda boleh menyalin nombor pesanan atau menyemak telefon bimbit anda untuk melihat jika ada sebarang maklumat penghantaran ekspres. Sudah tentu, ini semua perlu diselesaikan secara manual Jika anda ingin mengetahui lebih lanjut, datang dan lihat dengan editor. Cara mengikat APP Cainiao ke Pinduoduo 1. Buka APP Cainiao dan klik "Panduan Pakej" di penjuru kiri sebelah atas halaman utama. 2. Dalam antara muka, terdapat banyak laman web membeli-belah, dan akaun boleh diikat. 3. Klik untuk mengimport platform e-dagang lain. 4. Keizinan pengguna: Klik Pinduoduo untuk pergi ke antara muka

Bagaimana untuk mengikat aplikasi kereta Xiaomi pada peranti longgokan pengecasan Bagaimana untuk mengikat aplikasi kereta Xiaomi pada peranti longgokan pengecasan Apr 01, 2024 pm 06:52 PM

Kereta model Mi su7 terbaru yang dilancarkan oleh Xiaomi telah mendominasi pelbagai senarai carian hangat Ramai pengguna yang kebetulan ingin membeli kereta telah memilih kereta model Xiaomi su7 untuk pembelian Jadi bagaimana anda menggunakan aplikasi kereta Xiaomi anda untuk mengikat kereta selepas memilih Jika anda memutuskan untuk menggunakan longgokan pengecasan rumah untuk mengecas, panduan tutorial ini akan memberi anda pengenalan terperinci, saya harap ia dapat membantu anda. Mula-mula, kami membuka aplikasi mudah alih Xiaomi, klik butang Saya di sudut kanan bawah, dan kemudian dalam antara muka Saya, anda boleh melihat pilihan longgokan pengecasan rumah Selepas memasuki halaman yang mengikat longgokan pengecasan, klik kod imbasan butang di bawah dan imbas kod QR pada longgokan pengecasan Kod QR boleh digunakan untuk mengikat longgokan pengecasan pada apl.

Apakah yang perlu saya lakukan jika kotak hitam kecil saya tidak boleh diikat ke Steam? Apakah yang perlu saya lakukan jika kotak hitam kecil saya tidak boleh diikat ke Steam? Mar 12, 2024 pm 03:10 PM

Ketidakupayaan Kotak Hitam untuk mengikat Steam mungkin disebabkan oleh isu versi rangkaian atau perisian. Kotak hitam kecil menyediakan maklumat termasuk harga permainan yang dikeluarkan dan akan datang, keperluan konfigurasi komputer dan ulasan, dan analisis permainan yang mendalam. Selain itu, ia juga membolehkan pengguna mencari maklumat yang mereka perlukan melalui peranti mudah alih pada bila-bila masa dan di mana sahaja. Apa yang perlu dilakukan jika kotak hitam kecil tidak boleh diikat ke Steam 1. Sahkan status rangkaian dan pastikan peranti disambungkan ke Internet. 2. Semak versi Little Black Box Sila pastikan anda menggunakan versi terkini perisian Little Black Box dan cuba ikat akaun Steam anda. 3. Untuk menyemak tetapan akaun Steam, sila log masuk ke akaun Steam dan semak sama ada fungsi mengikat perisian pihak ketiga dihidupkan dalam tetapan privasi. 4. Hubungi perkhidmatan pelanggan rasmi Jika langkah di atas masih tidak dapat menyelesaikan masalah, anda disyorkan untuk menghubungi perkhidmatan pelanggan rasmi untuk mendapatkan bantuan.

See all articles