zoukankan      html  css  js  c++  java
  • 对JavaScript事件处理程序/事件监听器的设定的简单介绍

    下面是一些对事件处理进行设定的方式。

    • 指定为HTML元素的属性(事件处理程序)
    • 指定为DOM元素的属性(事件处理程序)
    • 通过EventTarget.addEventListener()进行指定(事件监听器)

    接下来,将会对各种方式进行简单说明。

    一、指定为HTML元素的属性

    将事件处理程序指定为HTML元素的属性是一种最为简单的设定事件处理程序的方式。

    <a id="test" href="https://www.baidu.com" onclick="alert('bar');alert('baz')">百度一下</a>

    如果包含多个事件处理程序则用分号分隔。当然,事先另外定义一个函数之后再执行该函数的方式也不会有问题。

    <body id="bo">
        <a id="test" href="https://www.baidu.com" onclick="f()">百度一下</a>
    <script>
        function f() {
            window.alert("page transfer");
            return true;
        }
    </script>

    如果事件处理程序返回了一个false值,则会取消该事件的默认行为。在下面的例子中,事件指的是超链接的跳转事件。

    <body id="bo">
        <a id="test" href="https://www.baidu.com" onclick="return f()">百度一下</a> <!--onclick="return f()" 将onclick视为函数-->
    <script>
        function f() {
            window.alert("page transfer");
            return false;
        }
    </script>

    二、指定为DOM元素的属性

    如果一个页面分别使用了HTML文件和JavaScript文件,则应该尽可能少地在HTML文件中使用JavaScript代码,以提高维护性。因此,最好将事件处理程序的设定全都写在JavaScript内。

    事件处理程序可以被指定为节点的属性。

    <body id="bo">
        <a id="test" href="https://www.baidu.com">百度一下</a>
    <script>
        var doit = document.getElementById('test');
        function f() {
            window.alert('stop page transfer');
            return false;   /*同理,返回false超链接将不会实现跳转*/
        }
        doit.onclick = f;
    </script>

    注意事件处理程序的设定,像以下前两种方式都是错误的。

        doit.onclick = f(); //得到的是函数的返回值
        doit.onclick = "f()";   //单纯的字符串赋值
        doit.onclick = f;   //正确,得到的是函数的引用

    如果将一个已指定为HTML属性中的事件处理程序指定为DOM元素的属性,则会覆盖HTML便签属性中的内容。实现这一多“指定”功能需要使用事件监听器。

    三、通过EventTarget.addEventListener()进行指定

    如果只能够指定1种处理操作的话,就很难处理复杂的行为。为了弥补这一缺点,在DOM Level2中定义了EventTarget.addEventListener()方法。

    <body id="bo">
        <a id="test" href="https://www.baidu.com">百度一下</a>
    <script>
        var doit = document.getElementById('test');
        function f() {
            window.alert('stop page transfer');
            return true;
        }
        function a(){
            window.alert('HelloWorld');
            return true;
        }
        doit.addEventListener('click',f,false); /*第一个参数为注册事件,第二个参数为注册事件处理函数,第三个参数不做介绍*/
        doit.addEventListener('click',a,false); /*注册多个监听器*/
    </script>
  • 相关阅读:
    java List按照对象的属性进行分组
    postgresql数据库大量锁表的问题解决
    postgresql 并发update下导致的死锁问题
    Spring Boot 2.X(十):自定义注册 Servlet、Filter、Listener
    Spring Cloud(一):入门篇
    Spring Boot 2.X(九):Spring MVC
    Spring Boot 2.X(八):Spring AOP 实现简单的日志切面
    Spring Boot 2.X(七):Spring Cache 使用
    Spring Boot 2.X(六):Spring Boot 集成 Redis
    Spring Boot 2.X(五):MyBatis 多数据源配置
  • 原文地址:https://www.cnblogs.com/chiweiming/p/11819078.html
Copyright © 2011-2022 走看看