两个实用的JavaScript工具函数:属性扩展与跨浏览器事件绑定

作者:像素漫游时间:2026-10-25 03:24:44浏览:144

本文介绍两个实用的JavaScript工具函数。第一个extend函数通过JSON格式批量赋值对象属性,简化DOM样式设置;第二个addEventListener函数封装了IE与标准浏览器的差异,实现跨浏览器的事件动态绑定,解决动态创建元素时事件失效的问题。

1.大家在实际工作中,会写各式各样的赋值语句。

简化DOM样式设置的属性扩展函数

在实际开发中,我们经常需要直接操作DOM元素的样式,例如通过obj.style.display = "none"来隐藏元素。


当这类赋值语句增多时,代码中会出现大量重复的obj.style前缀,导致阅读和维护变得困难。



为解决这一问题,base.js中的extend函数支持以JSON格式批量赋值属性,甚至可以直接赋值函数句柄。


具体实现代码如下:

 
/** 
* 扩展函数
* @param target 需要扩展的对象
* @param params 要往target里放的属性和方法
*/ 
function extend(target, params) {
if (!target) {
target = {};
    } 
for (var prop in params) {
target[prop] = params[prop];
    } 
return target;
} 

2. 由于ie不完全遵守w3c标准,他的事件模型和别的浏览器不一样。

跨浏览器的事件动态绑定函数

该函数的调用方式与直接赋值不同,更加简洁。


在动态创建DOM控件并需要为其增加事件时,直接使用onclick = function() {}的方式在IE等浏览器中可能无效,且无法绑定多个事件句柄。下面介绍一个通用的、支持全浏览器的事件绑定函数。


在大多数情况下,useCapture参数使用false,因此此处将其固定为false。


具体实现代码如下:

 
/** 
* 动态创建事件句柄
* @param control 需要扩展的对象
* @param eventName 事件名
* @param fn 函数句柄
*/ 
function addEventListener(control, eventName, fn) {
if (window.attachEvent) {
control.attachEvent('on' + eventName, fn);
} else {
control.addEventListener(eventName, fn, false);
    } 
} 

以上两个函数的使用示例可以参考我其他文章中的代码。

作者最新文章