JavaScript为事件处理器传递参数 (转)

mac2022-06-30  23

首先参考:javascript attachEvent和addEventListener 使用方法

attachEvent方法,为某一事件附加其它的处理事件。(不支持Mozilla系列) addEventListener方法 用于 Mozilla系列 举例: document.getElementById("btn").onclick = method1;  document.getElementById("btn").onclick = method2;  document.getElementById("btn").onclick = method3; 如果这样写,那么将会只有medhot3被执行 写成这样: var btn1Obj = document.getElementById("btn1");  //object.attachEvent(event,function);  btn1Obj.attachEvent("onclick",method1);  btn1Obj.attachEvent("onclick",method2);  btn1Obj.attachEvent("onclick",method3); 执行顺序为method3->method2->method1

如果是Mozilla系列,并不支持该方法,需要用到addEventListener var btn1Obj = document.getElementById("btn1");  //element.addEventListener(type,listener,useCapture);  btn1Obj.addEventListener("click",method1,false);  btn1Obj.addEventListener("click",method2,false);  btn1Obj.addEventListener("click",method3,false); 执行顺序为method1->method2->method3

  JavaScript为事件处理器传递参数 方法一: var newopen = function(id,level){  return function()  {    opentree(id,level);//该函数为外部定义的一个执行函数;  }}x.attachEvent("onclick",newopen(id,parseInt(level)+1));y.attachEvent("onclick",newopen(id,parseInt(level)+2));think8848的简化代码:if ( x.addEventListener)    //如果浏览器为Firefox{    x.addEventListener("click",function()                                            {                                                        opentree(id,level);   //opentree为外部定义的一个执行函数,id,level为实参;                                            });}else    //浏览器为IE{    x.attachEvent("onclick",function()                                        {                                            opentree(id,level);                                         });}方法二:<html><head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title></title></head><body> <a href="#" id="mylink">这是连接</a>

 <script type="text/javascript"> function AttachEvent(type, target, handler, owner){        var eventHandler = handler;    if(owner)    {    debugger;            // 在这里重新定义一个处理函数            eventHander = function(e)            {                   handler.call(owner, e);            }    }       if(window.document.all)            target.attachEvent("on" + type, eventHander );    else            target.addEventListener(type, eventHander, false);}

function MyLink_Click(e){        alert(this.tagName);        var target = e.srcElement || e.target;        alert(target.href);}

function test(){ var mylink = window.document.getElementById("mylink"); AttachEvent("click", mylink, MyLink_Click, mylink);

} </script>

 <input type="button" value="AttachEvent" οnclick="test()" /></body></html> 

 

转载于:https://www.cnblogs.com/fightLonely/archive/2011/03/22/1991029.html

最新回复(0)