js如何給事件繫結的函式傳遞引數

admin發表於2017-03-20

在實際應用中可能需要給事件處理函式傳遞引數進行處理,但是往往在應用中並不能遂人願。

先看一段例項程式碼:

[HTML] 純文字檢視 複製程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style type="text/css">
#thediv
{
  width:100px;
  height:30px;
  text-align:center;
  line-height:30px;
  margin:0px auto;
}
</style>
<script type="text/javascript">
window.onload=function()
{
  var odiv=document.getElementById("thediv");
  var obt=document.getElementById("bt");
  var str="螞蟻部落";
  obt.onclick=function(ev,str){
    var ev=ev||window.event;
    var x,y;
    x=ev.clientX;
    y=ev.clientY;
    odiv.innerHTML=str+"<br/>";
    odiv.innerHTML=odiv.innerHTML+x+" "+y;
  }
}
</script>
</head>
<body>
<div id="thediv"></div>
<input type="button" id="bt" value="檢視效果"/>
</body>
</html>

在以上程式碼中,點選按鈕測試發現,註冊的事件處理函式傳遞的引數只能夠是事件物件,也就是說如此為事件處理函式傳遞引數是錯誤的,程式碼修改如下:

[HTML] 純文字檢視 複製程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style type="text/css">
#thediv
{
  width:100px;
  height:30px;
  text-align:center;
  line-height:30px;
  margin:0px auto;
}
</style>
<script type="text/javascript">
window.onload=function()
{
  var odiv=document.getElementById("thediv");
  var obt=document.getElementById("bt");
  var str="螞蟻部落";
   
  function add(str){
    return function(ev){
      var ev=ev||window.event;
      var x,y;
      x=ev.clientX;
      y=ev.clientY;
      odiv.innerHTML=str+"<br/>";
      odiv.innerHTML=odiv.innerHTML+x+" "+y;
    }
  }
  obt.onclick=add(str)
}
</script>
</head>
<body>
<div id="thediv"></div>
<input type="button" id="bt" value="檢視效果"/>
</body>
</html>

相關文章