最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于javaScript注冊(cè)click事件傳遞參數(shù)的不成功問題

 更新時(shí)間:2014年07月18日 14:55:56   投稿:whsnow  
在javaScript中給一個(gè)html元素注冊(cè)click事件處理函數(shù)時(shí),比如給該處理函數(shù)傳3個(gè)參數(shù)??墒遣还苁鞘褂孟旅婺欠N方式都不能給事件處理函數(shù)傳遞參數(shù)

最近這半年作為一個(gè)java 程序員,我寫的javaScript代碼都快比java代碼多了,前段時(shí)間是給某銀行做一個(gè)柜員管控系統(tǒng),在柜員授權(quán)這一塊功能上,由于柜員的授權(quán)需要考慮各方面的因素,比如機(jī)構(gòu)權(quán)限、柜員類型權(quán)限、崗位權(quán)限,業(yè)務(wù)權(quán)限等等,并且要對(duì)這些權(quán)限要做多次的交集或者并集處理,頁面上不得不用許多的javascript來進(jìn)行控制。造成了這一功能模塊的實(shí)現(xiàn)上javaScript代碼比java代碼負(fù)責(zé)的情況。

而現(xiàn)在又要給某銀行開發(fā)一個(gè)保管箱管理系統(tǒng),其核心功能塊保管箱座管理以及保管箱管理,為實(shí)現(xiàn)管理功能上類似與C/S架構(gòu)那樣直觀、方便,并將處理結(jié)果實(shí)時(shí)的顯示給操作人員,經(jīng)過幾日思考與實(shí)驗(yàn),最終使用CSS+javaScript+java來進(jìn)行開發(fā),用java來處理業(yè)務(wù)邏輯,用CSS用來表現(xiàn)目標(biāo)對(duì)象的各種狀態(tài),用javaScript來根據(jù)目標(biāo)對(duì)象的狀態(tài)轉(zhuǎn)變,來實(shí)現(xiàn)其CSS的切換。

在這其中遇到了一個(gè)難題,就是在javaScript中給一個(gè)html元素注冊(cè)click事件處理函數(shù)時(shí),比如給該處理函數(shù)傳3個(gè)參數(shù)。可是不管是使用下面那種方式(node表示要注冊(cè)事件的節(jié)點(diǎn),fun為事件處理函數(shù))都不能給事件處理函數(shù)傳遞參數(shù):

node.addEventListener('click', fun, false); 
node.attachevent('onclick', fun);
Node['onclick']=fun

顯然以方式都不行,注意一下寫法都是不正確的:

node.addEventListener('click', fun(arg1,arg2,arg3), false); 
node.attachevent('onclick', fun(arg1,arg2,arg3)); 
Node['onclick']=fun(arg1,arg2,arg3)

好在讀過一本書《JavaScript.DOM高級(jí)程序設(shè)計(jì)》,在這本書上找到了解決方案。首先編寫一個(gè)方法:

function bindFunction(obj, func){ 
var args = []; 
for(var i =2; i < arguments.length; i++) { 
args.push(arguments[i]);
} 
return function(){ 
func.apply(obj, args);
}; 
};

然后在自己的js庫中添加如下兩個(gè)方法,如有不明白的地方,可以參考《JavaScript.DOM高級(jí)程序設(shè)計(jì)》,其中該書2.3小節(jié)有該方法的說明,只是本人加了些許改動(dòng):

function bindFunction(obj, func){ 
var args = []; 
for(var i =2; i < arguments.length; i++) {
args.push(arguments[i]);
}
return function(){
func.apply(obj, args);
};
}; 
window['OYF_MARK']['bindFunction'] = bindFunction; 
function addEvent(node, type, listener){
//使用前面的方法檢查兼容性以保證平穩(wěn)退化
if (!isCompatible()) {
return false
} 
if (!(node = $(node))) 
return false;
if (node.addEventListener) { 
//W3C的方法(冒泡事件,如果將false改為true,則為捕獲事件) 
node.addEventListener(type, listener, false); 
return true;
}
else
if (node.attachEvent) { 
//MSIE的方法 
node['e' + type + listener] = listener;
node[type + listener] = function(){
node['e' + type + listener](window.event);
} 
node.attachEvent('on' + type, node[type + listener]); 
return true; 
}
//若兩種方法都不具備則返回false 
return false;
};
window['OYF_MARK']['addEvent'] = addEvent;

以上兩個(gè)函數(shù)為本人根據(jù)《JavaScript.DOM高級(jí)程序設(shè)計(jì)》中源代碼稍作修改,添加到自己的的一個(gè)js庫中,以便復(fù)用。接下來就可以使用如下方式給元素注冊(cè)事件并向事件處理函數(shù)傳遞參數(shù)了:

//注冊(cè)新的onclick事件處理函數(shù)
OYF_MARK.addEvent(e,'click',OYF_MARK.bindFunction(e,getContainerDetail,x,y,containid));

相關(guān)文章

  • 概述BootStrap中role=

    概述BootStrap中role="form"及role作用角色

    這篇文章主要介紹了BootStrap中role="form"及role作用角色介紹,以及bootstrap柵欄系統(tǒng)css中的col-xs-*,col-sm-*,col-md-* 的意義簡單介紹,需要的朋友參考下
    2016-12-12
  • Bootstrap導(dǎo)航條的使用和理解3

    Bootstrap導(dǎo)航條的使用和理解3

    這篇文章主要為大家詳細(xì)介紹了關(guān)于Bootstrap導(dǎo)航條的使用和理解的學(xué)習(xí)記錄,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • JS apply用法總結(jié)和使用場景實(shí)例分析

    JS apply用法總結(jié)和使用場景實(shí)例分析

    這篇文章主要介紹了JS apply用法總結(jié)和使用場景,結(jié)合實(shí)例形式分析了JS apply的基本功能、原理、使用方法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-03-03
  • 最新評(píng)論

    台湾省| 中西区| 通江县| 台东市| 上高县| 嘉义市| 介休市| 佛冈县| 泾源县| 静乐县| 偏关县| 屏边| 体育| 汉源县| 红安县| 山东| 临清市| 保德县| 陆丰市| 滕州市| 台中市| 鄂托克前旗| 锡林郭勒盟| 灵川县| 于都县| 高唐县| 昆山市| 北京市| 吴旗县| 缙云县| 荔波县| 桐梓县| 张家川| 新邵县| 泾川县| 桃园市| 花莲县| 海南省| 灯塔市| 米易县| 鹰潭市|