[原创]js绑定带参数的事件

在JavaScript中,为了实现表现和控制相分离,可以通过0级的DOM事件属性或者2级的事件模型来实现,不过这两者在针对某个事件类型调用相应的事件句柄的时候,不能给事件句柄提供参数,也就是说,事件属性的值只能是一个函数引用。

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,arguments) {
		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事件属性的方式 
};

 使用方式:

Ext.onReady(function() {
	var handler1 = new Handler();
	handler1.registerEvent(getId(FID_ResidenceMigration), 'click', handler1.bind(null, changeTd, new Array(FID_ResidenceMigration, 'tdate1')));
});

function getId(id) {
	return document.getElementById(id);
}

//事件js
function Handler() {
};
Handler.prototype = {
	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;
		}
	},
	bind : function(obj, handler, arguments) {
		obj = obj || window;
		var args = [];
		for ( var i = 0; i < arguments.length; i++) {
			args.push(arguments[i]);
		}
		return function() {
			handler.apply(obj, args);
		};
	}
};

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 JavaScript 中,可以使用字符串拼接的方式动态生成 HTML 元素,并且可以为这些元素绑定点击事件并传入参数。以下是一个示例: ```javascript // 创建一个空的 div 元素 var myDiv = document.createElement("div"); // 设置 div 元素的 id 属性 myDiv.setAttribute("id", "myDiv"); // 创建一个 button 元素 var myButton = document.createElement("button"); // 设置 button 元素的文本内容 myButton.innerHTML = "点击我"; // 为 button 元素绑定点击事件,并传入参数 myButton.onclick = function() { handleClick("Hello, world!"); } // 将 button 元素添加到 div 元素中 myDiv.appendChild(myButton); // 将 div 元素添加到页面中 document.body.appendChild(myDiv); // 点击事件的处理函数 function handleClick(message) { alert(message); } ``` 在上面的示例中,我们通过 `createElement()` 方法创建了 `div` 和 `button` 元素,然后使用 `setAttribute()` 方法设置了 `div` 元素的 `id` 属性。接着,我们为 `button` 元素绑定了一个点击事件,并在点击事件的处理函数中传入了一个字符串参数。最后,我们将 `button` 元素添加到 `div` 元素中,将 `div` 元素添加到页面中。 当用户点击 `button` 元素时,点击事件的处理函数 `handleClick()` 将会被调用,并且将字符串参数 `"Hello, world!"` 传入其中。在这个处理函数中,我们使用 `alert()` 方法弹出这个字符串参数,从而实现了点击事件的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值