JavaScript為事件處理器傳遞參數

來源:互聯網
上載者:User
方法一:
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" onclick="test()" />
</body>
</html> 

相關文章

Alibaba Cloud 10 Year Anniversary

With You, We are Shaping a Digital World, 2009-2019

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。