国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JavaScript 事件屬性綁定帶參數的函數

2019-11-21 01:26:59
字體:
來源:轉載
供稿:網友
例如不能采用這種調用方式:element.onclick = test();element.onclick = test(arg1,arg2);只能通過element.onclick = function(){ ... };或者element.onclick = test這種方式來實現,所以無法給函數傳遞參數。參考了大量的網上資料,解決這個問題的方式,以代碼為例,如下所示:
復制代碼 代碼如下:

function Handler() { };
Handler.prototype = {
/*
* 把eventType類型的事件綁定到element元素,并使用handler事件句柄進行處理
* 兼容 IE 及 Firefox 等瀏覽器
*
* @param element 在其上注冊事件的對象(Object)
* @param eventType 注冊的事件類型(String),不加“on”
* @param handler 事件句柄(Function)
*/
registerEvent : function(element, eventType, handler) {
if(element.attachEvent) { //2級DOM的事件處理
element.attachEvent('on'+ eventType, handler);
}else if (element.addEventListener) {
element.addEventListener(eventType, handler, false);
} else { //0級DOM的事件處理
element['on'+ eventType] = handler;
}
},
/*
* 獲得帶參數的事件句柄的引用
*
* @param obj 需要綁定事件處理函數的所有者,null 表示 window 對象
* @param func 需要綁定的事件處理函數名
* @param ... 第三個參數開始為綁定事件處理函數的參數,由 0 到多個構成
*/
bind: function(obj, handler) {
obj = obj || window;
var args = [];
for(var i =2; i < arguments.length; i++)
{
args.push(arguments[i]);
}
return function() { handler.apply(obj, args) };
}
}
可能是使用方式為:
function show(txtObj) {
alert(txtObj.value);
txtObj.focus();
txtObj.select();
}
window.onload = function(){
var handler = new Handler();
handler.registerEvent($("txt"), "change", handler.bind(null,show,$("txt")));//采用2級事件模型的方式
//$("txt").onchange = handler.bind(null,show,$("txt"));//JavaScript事件屬性的方式
}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 浏阳市| 恭城| 淮滨县| 正宁县| 山阳县| 临沭县| 古蔺县| 宝坻区| 湘乡市| 新郑市| 内江市| 武强县| 兰西县| 永吉县| 邹平县| 南昌市| 开化县| 武汉市| 垦利县| 德令哈市| 融水| 抚州市| 库车县| 宜阳县| 福鼎市| 江孜县| 抚顺县| 芦山县| 淳安县| 万州区| 蓝田县| 兴仁县| 察隅县| 松滋市| 本溪市| 平乐县| 朝阳区| 光泽县| 隆昌县| 永兴县| 淅川县|