JavaScript 之 DOM [ 事宜 ]

事宜

形貌

  • 事宜是浏览器示知JavaScript顺序用户的行动

事宜属性

HTML的元素属性

  • HTML元素能够直接增加事宜属性

body>
<!-- 在html页面中增加事宜属性 - 属性值为函数名 -->
<button onclick="sclick()">按钮</button>
<script>
    /*
        在html页面设置事宜属性
        该事宜作用在当前元素,不能绑定多个
        而且没能使HTML页面构造与JavaScript之间存在有用星散
     */
    /* 设置事宜处置惩罚函数 */
    function sclick() {
        console.log( '娃哈哈哈哈哈哈哈' );
    }
</script>
</body>

DOM事宜属性

  • DOM对象能够设置事宜属性
<body>
<button>按钮</button>
<button>按钮</button>
<button>按钮</button>
<button>按钮</button>
<script>
    /*
        DOM对象的事宜属性
        onclick = function()
        该事宜能够绑定多个元素
        也做到了HTML构造与JavaScript的有用星散
     */
    /* 先定位元素位置 - 注重类数组的挪用值 */
    var b1 = document.getElementsByTagName( 'button' )[0];
    /* 设置鼠标点击事宜 */
    b1.onclick = function () {
        console.log( '嘻嘻嘻嘻嘻嘻嘻之郎' );
    };

    /* 多个雷同元素绑定一个事宜 */
    var b2 = document.getElementsByTagName( 'button' );
    /* 先遍历类数组猎取到每个元素 */
    for ( var bt = 0; bt < b2.length; bt++ ) {
        var bs = b2[bt];
        /* 在举行事宜绑定 */
        bs.onclick = function () {
            console.log( '嘻嘻嘻嘻嘻嘻嘻之郎' );
        }
    }
</script>
</body>

事宜监听器

  • DOM对象供应的 addEventListener()要领
  • 事宜监听器也能够设置事宜属性
  • 该要领有浏览器兼容题目

    • IE8 以下版本不支持
    • IE8 供应了处理要领

      • attachEvent()要领
<body>
<button>按钮</button>
<button>按钮</button>
<button>按钮</button>
<script>
    /*
        事宜监听器
        addEventListener()“括号中先写事宜名‘没有on’,在写事宜事宜处置惩罚函数,在写布尔值‘可省略’”
        能够为单个元素绑定多个事宜
     */
    /* 先定位指定元素的位置 */
    var b1 = document.getElementsByTagName( 'button' )[0];
    /* 设置事宜监听器 */
    b1.addEventListener( 'click', function() {
        console.log( '我特啊呦赌赢' );
    } );
    /* 多个雷同元素绑定一个事宜 */
    var b2 = document.getElementsByTagName( 'button' );
    /* 先遍历类数组猎取到每个元素 */
    for ( var bs = 0; bs < b2.length; bs++ ) {
        var bx = b2[bs];
        /* 设置事宜监听器 */
        bx.addEventListener('click', function () {
            console.log('我特啊呦赌赢');
        });
    }
    /*
        事宜监听器存在浏览器兼容题目
        attachEvent():IE 8 特地的事宜监听器
        括号中先写事宜名‘有on’,在写事宜事宜处置惩罚函数,在写布尔值‘可省略’
     */
    b1.attachEvent( 'onclick', function () {
        console.log( '我特啊呦弄啥嘞!...' );
    } );
</script>
</body>

移除绑定事宜

  • removeEventListener()
  • 示意对已绑定的事宜举行移除
<body>
<button id="b1">按钮</button>
<script>
    /*
        移除绑定事宜
        removeEventListener()
        括号中先写事宜名‘没有on’,在写事宜处置惩罚函数名(用于指定目的事宜)
        只能作用在事宜监听器上
     */
    var b = document.getElementById( 'b1' );
    /* 零丁写事宜处置惩罚函数并定名 - 轻易指定目的 */
    function btn() {
        console.log( '我特啊呦弄啥嘞!...' );
    }
    /* 对指定的目的事宜举行增加 */
    b.addEventListener( 'click', btn );
    /* 对指定的目的事宜举行移除 */
    b.removeEventListener( 'click', btn );

    /* 移除绑定事宜有兼容题目 */
    /* 特地供应了处理IE 8 的题目 */
    b.detachEvent( 'click', btn );
</script>
</body>

事宜对象

  • Event事宜对象

    • 一切设置事宜属性的体式格局都能运用
  • 该对象存在于事宜处置惩罚函数的参数中
<body>
<button id="b1">按钮</button>
<script>
    /*
        Event事宜对象
        一切设置事宜属性的体式格局都能运用
        该对象存在于事宜处置惩罚函数的参数中
     */
    var b = document.getElementById( 'b1' );
    b.addEventListener( 'click', function( event ) {
        console.log( event );
    } );
    /*
         Event事宜对象具有兼容题目
         该事宜对象被增加到 window 对象中
     */
    b.attachEvent( 'onclick', function( event ) {
        // event事宜对象牢固写法
        var bevent = event || window.event;
        console.log( bevent );
    } );
</script>
</body>

阻挠默许行动

  • event.preventDefault()
  • 示意阻挠目的元素所绑定的事宜运转
<body>
<a id="a1" href="事宜对象.html">这是链接</a>
<script>
    /*
        阻挠默许行动
        event.preventDefault()
        示意阻挠目的元素所绑定的事宜运转
     */
    /* 定位目的元素的位置 */
    var a = document.getElementById( 'a1' );
    /* 绑定事宜属性 */
    /*a.addEventListener( 'click', function(event) {
        /!* 阻挠事宜的运转 *!/
        event.preventDefault();
    } );*/

    /*
        return false语句
        也具有阻挠默许行动的功用
        该语句以后的代码将不会被实行
        发起安排在事宜处置惩罚函数的最后面
        该语句不能作用在 addEventListener()中
     */
    a.onclick = function ( event ) {
        event.preventDefault();
        return false;
    }
</script>
</body>

猎取鼠标坐标

pageX和pageY

  • 示意猎取鼠标在页面中的位置
<body>
<button id="b1">按钮</button>
<script>
    var b = document.getElementById( 'b1' );
    b.addEventListener( 'click', function ( event ) {
        console.log( event.pageX, event.pageY );
    } );
</script>
</body>

clientX和clientY

  • 示意猎取鼠标在可视窗口中的位置
<body>
<button id="b2">按钮</button>
<script>
    var b = document.getElementById( 'b2' );
    b.addEventListener( 'click', function ( event ) {
        console.log( event.clientX, event.clientY );
    } );
</script>
</body>

screenX和screenY

  • 示意猎取鼠标在显示器屏幕中的位置
<body>
<button id="b3">按钮</button>
<script>
    var b = document.getElementById( 'b3' );
    b.addEventListener( 'click', function ( event ) {
        console.log( event.screenX, event.screenY );
    } );
</script>
</body>

offsetX和offsetY

  • 示意猎取鼠标相对于在父元素中的位置
<body>
<button id="b4">按钮</button>
<script>
    var b = document.getElementById( 'b4' );
    b.addEventListener( 'click', function ( event ) {
        console.log( event.offsetX, event.offsetY );
    } );
</script>
</body>
    原文作者:蔡志远
    原文地址: https://segmentfault.com/a/1190000016239371
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞