两个实用的JavaScript工具函数:属性扩展与跨浏览器事件绑定
作者:像素漫游时间:2026-10-25 03:24:44浏览:144
本文介绍两个实用的JavaScript工具函数。第一个extend函数通过JSON格式批量赋值对象属性,简化DOM样式设置;第二个addEventListener函数封装了IE与标准浏览器的差异,实现跨浏览器的事件动态绑定,解决动态创建元素时事件失效的问题。
简化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);
}
} 以上两个函数的使用示例可以参考我其他文章中的代码。
作者最新文章
D3.js 处理大规模数据点的性能优化策略
2026-11-05 15:37:25
JS实现网页摄像头实时扫码:结合getUserMedia与jsQR教程
2026-11-05 15:27:28
D3.js v5 迁移到 v7 的 API 变更与注意事项
2026-11-05 11:57:17
使用 animate.js 实现多元素协同的序列动画
2026-11-04 22:27:53
JS拖拽排序时怎么添加平滑动画效果?FLIP技术实战
2026-11-04 10:12:22
