L'exemple de cet article décrit l'utilisation de l'écouteur d'événements js. Partagez-le avec tout le monde pour votre référence. L'analyse spécifique est la suivante :
1. Lorsque le même objet utilise la méthode d'écriture .onclick pour déclencher plusieurs méthodes, cette dernière méthode écrasera la méthode précédente, c'est-à-dire que lorsque l'événement onclick de l'objet se produit, seule la dernière liaison sera exécutée. . méthode. Avec l'écoute d'événements, il n'y aura pas d'écrasement et chaque événement lié sera exécuté. Comme suit :
window.onload = function(){ var btn = document.getElementById("yuanEvent"); btn.onclick = function(){ alert("第一个事件"); } btn.onclick = function(){ alert("第二个事件"); } btn.onclick = function(){ alert("第三个事件"); } }
Au final, seul le troisième événement est généré, car cette dernière méthode écrase la méthode précédente.
Fonction de liaison d'événement d'origine addEventListener :
var eventOne = function(){ alert("第一个监听事件"); } function eventTwo(){ alert("第二个监听事件"); } window.onload = function(){ var btn = document.getElementById("yuanEvent"); //addEventListener:绑定函数 btn.addEventListener("click",eventOne); btn.addEventListener("click",eventTwo); }
Sortie : le premier événement d'écoute et le deuxième événement d'écoute
2. Après avoir utilisé la surveillance des événements pour lier les méthodes aux objets, vous pouvez dissocier la liaison correspondante :
var eventOne = function(){ alert("第一个监听事件"); } function eventTwo(){ alert("第二个监听事件"); } window.onload = function(){ var btn = document.getElementById("yuanEvent"); btn.addEventListener("click",eventOne); btn.addEventListener("click",eventTwo); btn.removeEventListener("click",eventOne); }
Sortie : Deuxième événement d'écoute
3. Lors de la dissociation d'un événement, vous devez utiliser le handle de la fonction. L'écriture de la fonction entière ne la dissociera pas.
Mauvaise orthographe :
btn.addEventListener("click",function(){ alert(11); }); btn.removeEventListener("click",function(){ alert(11); });
Écriture correcte :
btn.addEventListener("click",eventTwo); btn.removeEventListener("click",eventOne);
Résumé : Les événements d'écoute après encapsulation de la fonction sont les suivants, compatibles avec tous les principaux navigateurs grand public.
/* * addEventListener:监听Dom元素的事件 * * target:监听对象 * type:监听函数类型,如click,mouseover * func:监听函数 */ function addEventHandler(target,type,func){ if(target.addEventListener){ //监听IE9,谷歌和火狐 target.addEventListener(type, func, false); }else if(target.attachEvent){ target.attachEvent("on" + type, func); }else{ target["on" + type] = func; } } /* * removeEventHandler:移除Dom元素的事件 * * target:监听对象 * type:监听函数类型,如click,mouseover * func:监听函数 */ function removeEventHandler(target, type, func) { if (target.removeEventListener){ //监听IE9,谷歌和火狐 target.removeEventListener(type, func, false); } else if (target.detachEvent){ target.detachEvent("on" + type, func); }else { delete target["on" + type]; } } var eventOne = function(){ alert("第一个监听事件"); } function eventTwo(){ alert("第二个监听事件"); } window.onload = function(){ var bindEventBtn = document.getElementById("bindEvent"); //监听eventOne事件 addEventHandler(bindEventBtn,"click",eventOne); //监听eventTwo事件 addEventHandler(bindEventBtn,"click",eventTwo ); //监听本身的事件 addEventHandler(bindEventBtn,"click",function(){ alert("第三个监听事件"); }); //取消第一个监听事件 removeEventHandler(bindEventBtn,"click",eventOne); //取消第二个监听事件 removeEventHandler(bindEventBtn,"click",eventTwo); }
Exemple :
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Event</title> <script type="text/javascript"> function addEventHandler(target,type,func){ if(target.addEventListener){ //监听IE9,谷歌和火狐 target.addEventListener(type, func, false); }else if(target.attachEvent){ target.attachEvent("on" + type, func); }else{ target["on" + type] = func; } } function removeEventHandler(target, type, func) { if (target.removeEventListener){ //监听IE9,谷歌和火狐 target.removeEventListener(type, func, false); } else if (target.detachEvent){ target.detachEvent("on" + type, func); }else { delete target["on" + type]; } } var eventOne = function(){ alert("第一个监听事件"); } function eventTwo(){ alert("第二个监听事件"); } window.onload = function(){ var bindEventBtn = document.getElementById("bindEvent"); //监听eventOne事件 addEventHandler(bindEventBtn,"click",eventOne); //监听eventTwo事件 addEventHandler(bindEventBtn,"click",eventTwo ); //监听本身的事件 addEventHandler(bindEventBtn,"click",function(){ alert("第三个监听事件"); }); //取消第一个监听事件 removeEventHandler(bindEventBtn,"click",eventOne); //取消第二个监听事件 removeEventHandler(bindEventBtn,"click",eventTwo); } </script> </head> <body> <input type="button" value="测试" id="bindEvent"> <input type="button" value="测试2" id="yuanEvent"> </body> </html>
J'espère que cet article sera utile à la conception de la programmation JavaScript de chacun.