js中的事件处理方法

第一种:HTML事件处理程序

  即将事件直接添加到HTML结构里

<div>
    <input type="button" value="按钮" onclick="showMessage()">
</div>
<script>
    function showMessage(){
        alert("hello world");
    }
</script>

这种方式是比较容易理解,但是缺点也很明显:HTML和JS代码紧密的耦合在一起,想修改的话需要同时要改html和js两部分的内容。

第二种:DOM0级事件处理

  即 把一个函数赋值给一个事件处理程序属性。是一种用的比较多的方法,具有简单,跨浏览器等特点。

<div>
    <input type="button" id="btn" value="按钮" onclick="showMessage()">
</div>
<script>
    var btn=document.getELementById(‘btn‘);
    btn.onclick=function(){
        alert("hello world");
    }
btn.onclick=null;//删除onclick属性
</script>

第三种 DOM2级事件处理

DOM2级事件定义了两个方法,用于处理指定和删除事件处理程序的操作:addEventListener()和removeEventListner()。这这两个方法接受三个参数:要处理的事件名,作为事件处理程序的函数和函数的布尔值(true表示在事件捕获阶段处理事件程序,false则对应事件冒泡,默认是false).

<div>
    <input type="button" id=“btn” value="按钮" >
</div>
<script>
    var btn=document.getElementById("btn");
    btn.addEventListener(‘click‘,showMessage,false);
  btn.addEventListener(‘click‘,showOther,false);
  function showMessage(){ alert("hello world"); }
  function showOther(){ alert("other"); }
  btn.removeEventListener(‘click‘,showMessage,false);
</script>

注意:通过addEventListener添加的事件只能通过removeEventListener来删除,同时这两个函数的接受的事件名是需要去掉“on”的。通过DOM0级和DOM2级事件处理可以给给元素添加多个事件处理程序和多个事件。这些添加的事件按照其调用的先后顺序执行。

第四种 IE事件处理程序

提供了两个方法:attachEvent()添加事件和detachEvent()删除事件,接受两个参数:事件处理的程序的名称(不去掉"on"),事件处理程序的函数 IE8及以前的浏览器只支持事件冒泡。

<div>
    <input type="button" id=“btn” value="按钮" >
</div>
<script>
    var btn=document.getElementById("btn");
    btn.attachEvent(‘onclick‘,showMessage,false);
  function showMessage(){ alert("hello world"); }
</script>

事件处理兼容低版本IE浏览器问题解决:新建一个对象event,给该对象添加一个addEvent方法,在该方法里对浏览器进行能力检测(支持哪种事件处理方式就用哪种),删除事件同理。

  <input type="button" id="btn" value="按钮">
    <script>
        var btn=document.getElementById(‘btn‘);
        function showMessage(){
            alert(‘hello dq‘);
        }
        var event={
            addevent:function(element,type,handle){
                if(element.addEventListener){
                    element.addEventListener(type,handle,false);
                }else if(element.attachEvent){
                    element.attachEvent(‘on‘+type,handle);
                }else{
                    elememt[‘on‘+type]=handle;
                }
            }
        }
        event.addevent(btn,‘click‘,showMessage);
    </script>
时间: 2024-08-11 07:41:06

js中的事件处理方法的相关文章

js中关于事件处理函数名后面是否带括号的问题

今天总结一个关于事件处理程序的小细节.首先回顾一下事件处理的一些概念. JS中的事件处理(事件绑定)就是让某种或某些事件触发某些活动.有两种常见的形式,分别是DOM Level 0 和DOM Level 2.这两种方式最大的区别就在于DOM 0级事件处理只能用于事件冒泡,而DOM 2级事件处理却可以通过设置第三个参数来分别支持事件冒泡和事件捕获. DOM 0级事件处理一般是直接把一个函数分配给一个事件处理程序,既可以在元素中直接分配一个事件处理程序,如方式一所示;也可以在脚本中把函数分配给事件处

php学习笔记(JS中的常见方法)

JS中的常见方法: 1.日期时间函数(需要用变量调用): var b = new Date(); //获取当前时间 b.getTime() //获取时间戳 b.getFullYear() //获取年份 b.getMonth()+1; //获取月份 b.getDate() //获取天 b.getHours() //获取小时 b.getMinutes() //获取分钟 b.getSeconds() //获取秒数 b.getDay() //获取星期几 b.getMilliseconds() //获取毫

js中使用eval()方法将字符串转换成日期格式、并获取指定时间的日期

1.在js中eval()方法将字符串格式数据转换成日期格式 function getDate(strDate) {         //strDate为需要转换成日期格式的字符串         var date = eval('new Date(' + strDate.replace(/\d+(?=-[^-]+$)/,                 function (a) { return parseInt(a, 10) - 1; }).match(/\d+/g) + ')');    

JS中通过call方法实现继承

讲解都写在注释里面了,有不对的地方请拍砖,谢谢! <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>JS通过call方法实现继承</title> </head> <body> <script type="text/javascript"> /* js中的继承有多种实现方式,今天我们讨论下通过call方法实现的继承. 此

Js中sort(sortfun)方法

1 <meta charset="utf-8" /> 2 3 <script language="javascript"> 4 5 /** 6 * @date 2014-10-23 11:17:04 7 * @via http://www.jb51.net/article/4168.htm 8 * @topic Js中sort(sortfun)方法 9 * @return 一个元素已经进行了排序的 Array 对象. 10 * @sortfu

笔记-[6]-js中事件绑定方法的总结

js中的两种对象事件绑定方法: 1:常用的如:div.onclick=function(){...}; 2:通过系统方法绑定事件: 非IE:addEventListener('事件名[不加on]',function(){},false[或者true]) IE:attachEvent('事件名[加on]',function(){}); 通过系统方法绑定事件可以让对象可以绑定相同的事件并且执行不同的操作,如果使用第一种方法绑定多个相同的事件,最后一个事件会覆盖前面所有的事件. 在addEventLi

JavaScript开发之旅(2):JS中的tostring()方法

看到一个toString()方法,在JS中,定义的所有对象都具有toString()方法. 定义和用法 toString() 方法可把一个逻辑值转换为字符串,并返回结果. 语法 booleanObject.toString(); 返回值 根据原始布尔值或者 booleanObject 对象的值返回字符串 "true" 或 "false". 抛出 如果调用该方法的对象不是 Boolean,则抛出异常 TypeError. 创建一个 Boolean 对象,并把它转换成字

字符串方法,js中的数组方法,ES5新增的数组方法,以及jQuery中的数组方法

说明:本片主要对比介绍与数组操作相关的方法 (一)字符串方法(String对象方法) indexOf() //检索字符串 lastIndexOf() //从后向前搜索字符串 match() //找到一个或多个正则表达式的匹配 replace() //替换与正则表达式匹配的子串 search() //检索与正则表达式相匹配的值 slice() //提取字符串的片断,并在新的字符串中返回被提取的部分 split() //把字符串分割为字符串数组 substr() //从起始索引号提取字符串中指定数目

JS中函数调用的方法

JavaScript 函数有 4 种调用方式.每种方式的不同方式在于 this 的初始值. 1.作为一个函数调用 function myFunction(a, b) { return a* b; } myFunction(10, 2); // myFunction(10, 2) 返回 20 或 function myFunction() { return this; } myFunction(); // 返回 window对象 this为window对象. 2.作为方法调用 var myObje