zoukankan      html  css  js  c++  java
  • 事件处理函数的注册,event参数的传递

    下面列出的是三种常用的方式

    1、在元素标签中给事件属性赋值(所有浏览器都支持)

    测试1

    html代码:

    <button onclick='test(1,event,2)'>test</button>

    js代码:

    function test(){

    for(var i=0;i<arguments.length;i++){

    document.write(arguments[i]+'<br/>');

    }

    }

    结果:

    1

    [object MouseEvent]

    2

    测试2

    html代码:

    <button onclick='test()'>test</button>

    js代码:

    function test(arg1,arg2,…,argN){

    for(var i=0;i<arguments.length;i++){

    document.write(arguments[i]+'<br/>');

    }

    }

    结果:

    什么也不输出

    结论:

    <button onclick='test(here)'>test</button>

    1. here处有几个参数,就传进几个参数,不受test函数的形参个数影响
    2. event参数用“event”关键字传递
    3. 如果什么参数也不传,IE浏览器可以通过window.event获得事件对象,其他浏览器暂时不知道怎么获得

    2、用js给元素对象添加事件属性(所有浏览器都支持)

    测试1

    html代码:

    <button id='btn1'>test</button>

    js代码:

    document.getElementById('btn1').onclick=test;

    function test(){

    for(var i=0;i<arguments.length;i++){

    document.write(arguments[i]+'<br/>');

    }

    }

    结果:

    FF:[object MouseEvent]

    IE:arguments.length=0

    结论:

    IE要获得事件对象,需用window.event,其他浏览器会默认传入一个事件对象

    3.使用addEventListener()removeEventListener()方法

    使用这种方法可以为一个对象注册多个事件处理函数。另外,IE使用对应的attachEvent()detachEvent()方法

    都会为事件处理函数传入一个事件对象,如果想为事件处理函数传入多个参数,可以这样写:

     

                document.getElementById("btn_2").addEventListener("click",function(){test2(arguments[0],1,2)},false);
                document.getElementById("btn_2").attachEvent("onclick",function(){test2(arguments[0],1,2)});//IE

     

     

     

    参考资料:

     [1]张亚飞,《JavaScript权威指南》

     

  • 相关阅读:
    C++ and OO Num. Comp. Sci. Eng.
    C++ and OO Num. Comp. Sci. Eng.
    C++ and OO Num. Comp. Sci. Eng.
    C++ and OO Num. Comp. Sci. Eng.
    C++ and OO Num. Comp. Sci. Eng.
    C++ and OO Num. Comp. Sci. Eng.
    WPF 应用程序使用程序的模型视图 ViewModel 设计模式 WVVM
    穿透Session 0 隔离(二)(How to use Windows service run a GUI application.)
    穿透Session 0 隔离(一)(how to use Windows service run a GUI application.)
    .Net 远程路径权限访问。
  • 原文地址:https://www.cnblogs.com/acaciasun/p/3113948.html
Copyright © 2011-2022 走看看