Javscript 事件处理程序

使用DOM级别0事件处理程序

先看一个简单的例子

<div id="div1">
<a href="http://www.baidu.com">百度</a><br>
<input type="text" placeholder="请输入文本" id="input1">
<input type="button" value="提交" id="input2" onclick="test()">
</div>
<script >
function test() {
   var textnode=document.getElementById('input1');
   if(textnode.value===''){
       alert('请输入信息')
   }
   else {
       alert('您输入的信息是'+textnode.value);
   }
}
</script>
  • 该例是点击按钮之后查看表单内数据是否完整,主要作法为在在标签内添加事件处理程序名,以及调用函数,也可将其调用写入js代码中如textnode.onclik=function(){},此时该注意的是其DOM节点一定要调用正确
  • 然而该方法的漏洞在于若对同一个事件添加俩个相同的事件处理程序后面的一个会覆盖前面的一个,且若多标签嵌套,其无法设置冒泡阶段还是捕捉阶段,因此我们常用下面这种方法

事件监听addEventListener(DOM级别2事件)

函数名 参数1 参数2 参数3
addEventListener "event_type" function_name true or false
该参数为事件名 该参数为调用函数名 true为捕捉阶段,false为冒泡阶段(更为常用)
  • 删除事件
函数名 参数1 参数2 参数3
removeEventListener "event_type" function_name true or false
该参数为事件名 该参数为调用函数名 true为捕捉阶段,false为冒泡阶段(更为常用)

<b>值得注意的是第一个参数是事件名,而不是事件处理程序名,第二个参数最好使用单独函数,以便删除时调用,否则该监听器无法被删除,含有就是捕捉阶段指事件发生时顺序为组件由外到内,而冒泡阶段正好相反</b>

  • 下面是一个例子

    <div id="div1">
    <!--<a href="http://www.baidu.com">百度</a><br>-->
    <input type="text" id="input0"><br>
    <input type="text" placeholder="请输入文本" id="input1">
    </div>
    <script >
     var textnode=document.getElementById('input1');
     function getfocus() {
          alert("获得焦点");
         textnode.removeEventListener("focus",getfocus,false);
      }
     textnode.addEventListener("focus",getfocus,false);
    </script>
    

event对象

  • 但事件发生时,浏览器将自动创建event对象,该信息可以被脚本使用,帮助执行必要的操作,例如某个键被按下的信息就存储在该对象中
    主要属性如下
    <a href="http://www.w3school.com.cn/jsref/dom_obj_event.asp">event属性</a>
    下面为两个示例
    <div id="div1">
    <a href="http://www.baidu.com" id="link">百度</a>

    </div>
    <script >
    var linknode=document.getElementById('link');
    linknode.addEventListener("click",test,false)
    function test() {
    event.preventDefault();
    alert('阻止超链接跳转');
    }
    </script>

 <div id="div1">
<input type="text" id="input1">
</div>
<script >
   var linknode=document.getElementById('input1');
   linknode.addEventListener("keyup",test,false)
    function test() {
        alert('您所按键的键码是:'+event.keyCode);
    }
</script>

2017/6/1
02:13

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 声明:本文来源于http://www.webzsky.com/?p=731我只是在这里作为自己的学习笔记整理一下(...
    angryyan阅读 7,121评论 1 6
  • 事件流: 事件流:页面接收事件的顺序。 IE定义的:事件冒泡流(由最具体的元素依次传播到DOM树的最上层的Docu...
    xiaoguo16阅读 608评论 0 0
  • 以下文章为转载,对理解JavaScript中的事件处理机制很有帮助,浅显易懂,特分享于此。 什么是事件? 事件(E...
    jxyjxy阅读 3,073评论 1 10
  • 个人博客:https://yeaseonzhang.github.io 花了半个多月的时间,终于又把“JS红宝书”...
    Yeaseon阅读 1,790评论 2 23
  • 现在市面上的橘子黄黄绿绿,正当季的果子,那些绿色的橘子真就没熟,吃不得? 如果你觉得“青涩”等同于“不成熟”,那么...
    朵小阳阅读 1,775评论 0 0