JavaScript為事件處理函式傳遞引數
本章節就以click點選事件為例,介紹一下如何為事件處理函式傳遞引數。
[JavaScript] 純文字檢視 複製程式碼ele.addEventListener('click', fun,false); ele.attachevent('onclick',fun); ele['onclick']=fun
上面的三種方式可以為元素註冊click事件處理函式。
特別說明第一種是標準瀏覽器的方式,第二種是IE11以下瀏覽器採用的方式,第三種就不用多說了,能夠相容各個瀏覽器。
但是為事件處理函式傳遞引數絕對不能是下面的方式:
[JavaScript] 純文字檢視 複製程式碼ele.addEventListener('click',fun(arg1,arg2,arg3),false); ele.attachevent('onclick',fun(arg1,arg2,arg3)); ele['onclick']=fun(arg1,arg2,arg3);
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script type="text/javascript"> function done(){ arguments[0].innerHTML=arguments[1]; } function bindFunction(obj,func){ var args=[]; for(var index=2;index<arguments.length;index++) { args.push(arguments[index]); } return function(){ func.apply(obj,args); } } function addEvent(node,type,listener){ if (node.addEventListener) { node.addEventListener(type,listener,false); return true; } else if (node.attachEvent) { node.attachEvent('on' + type,listener); return true; } }; window.onload=function(){ var oshow=document.getElementById("show"); var obt=document.getElementById("bt"); addEvent(obt,"click",bindFunction(obt,done,oshow,"螞蟻部落")); } </script> </head> <body> <div id="show"></div> <input type="button" id="bt" value="檢視效果"/> </body> </html>
上面的程式碼實現了為事件處理函式傳遞引數的效果,下面介紹一下它的實現過程。
一.程式碼註釋:
(1).function done(){
arguments[0].innerHTML=arguments[1];
}
宣告一個函式,當事件處理函式執行的時候,會呼叫此函式。
(2).function bindFunction(obj,func){},此函式可以返回一個匿名函式作為事件處理函式,並且此事件處理函式會為匿名函式傳遞一個陣列引數,第一個引數是元素物件,第二個引數是事件處理函式執行時呼叫的函式。
(3).var args=[],宣告一個陣列用來儲存傳遞的引數。
(4).for(var index=2;index<arguments.length;index++) {
args.push(arguments[index]);
}從第三個引數開始進行遍歷,因為從第三個引數開始,就相當於為事件處理函式傳遞的引數,並將相應的引數存入陣列。
(5).return function(){
func.apply(obj,args);
}
返回一個匿名函式,在這裡func函式使用apply進行了一下處理,目的是為了能夠接收一個陣列。
(6).function addEvent(node,type,listener){
if (node.addEventListener) {
node.addEventListener(type,listener,false);
return true;
}
else if (node.attachEvent) {
node.attachEvent('on' + type,listener);
return true;
}
};
為指定元素註冊事件處理函式,上面是相容性處理。
二.相關閱讀:
(1).apply()方法參閱javascript apply()一章節。
(2).push()方法參閱javascript push()一章節。
(3).addEventListener()方法參閱addEventListener()用法一章節。
相關文章
- JavaScript函式傳遞引數JavaScript函式
- 函式作為引數傳遞函式
- 函式的引數傳遞函式
- JavaScript 註冊事件處理函式JavaScript事件函式
- 函式引數傳遞及返回函式
- JavaScript 批量註冊事件處理函式JavaScript事件函式
- python中函式的引數傳遞Python函式
- React事件傳遞引數React事件
- Python的函式引數傳遞:傳值?引用?Python函式
- Python語法—函式及引數傳遞Python函式
- php函式引用傳遞引數的方法PHP函式
- Golang 切片作為函式引數傳遞的陷阱與解答Golang函式
- 『無為則無心』Python函式 — 26、Python函式引數的傳遞方式Python函式
- 將函式作為引數傳遞解決非同步問題函式非同步
- 『無為則無心』Python函式 — 29、Python變數和引數傳遞Python函式變數
- C語言 將函式(有參、無參)作為引數傳遞C語言函式
- 【C語言】函式的概念和函式的呼叫(引數傳遞)C語言函式
- Python3之函式的引數傳遞與引數定義Python函式
- [思] 當需要傳遞多個不定引數時,該如何設計 JavaScript 函式?JavaScript函式
- 如何計算PHP函式中傳遞的引數數量PHP函式
- Javascript函式引數求值——Thunk函式JavaScript函式
- JavaScript 獲取 url 傳遞引數值JavaScript
- JavaScript 中的引數處理JavaScript
- vue事件帶預設引數,怎麼傳遞其他引數Vue事件
- echarts 繫結事件處理函式Echarts事件函式
- 二級指標,二維陣列函式引數傳遞指標陣列函式
- JavaScript事件處理JavaScript事件
- 函式中引數傳值函式
- JavaScript獲取url傳遞的引數值JavaScript
- 傳遞函式函式
- 引數傳遞
- element-UI change 事件傳遞自定義引數UI事件
- 遞迴函式,可變引數列表遞迴函式
- scala:函式作為值或引數進行傳遞、作為返回值進行返回函式
- Qt 事件傳遞流程-事件處理器|事件分發器|事件過濾器QT事件過濾器
- JavaScript 函式引數解構物件JavaScript函式物件
- php函式之如何用預設引數和可變長度引數方式傳遞?PHP函式
- setInterval 回撥函式傳引數函式