4a76561a85
- 将时区列表提取到独立常量文件 `timezone.js` 中,便于维护和扩展 - 重构时间戳显示逻辑,将初始化功能从事件处理器中分离 - 引入 timerManager、eventManager 和 scriptManager 进行资源统一管理 - 更新 DOM 操作方式,使用 window.eventManager 替代直接 addEventListener - 改进时间戳更新函数,支持传入元素引用以提高灵活性 - 在路由加载脚本时增加调试日志,方便追踪组件加载过程 - 移除冗余的 DOM 工具函数(如 getElementById),统一使用原生方法 - 修复计时器清理问题,确保通过 timerManager 正确清除定时任务 - 初始化时间戳和日期输入框默认值,提升用户体验
77 lines
1.7 KiB
JavaScript
77 lines
1.7 KiB
JavaScript
/**
|
|
* DOM工具类函数
|
|
*/
|
|
|
|
/**
|
|
* 为元素添加事件监听器
|
|
* @param {string} id - 元素ID
|
|
* @param {string} event - 事件类型
|
|
* @param {Function} handler - 事件处理函数
|
|
*/
|
|
export function addEventListenerById(id, event, handler) {
|
|
const ele = document.getElementById(id);
|
|
if (ele) {
|
|
window.eventManager.add(ele, event, handler);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 判断元素是否包含指定类名
|
|
* @param {*} elem
|
|
* @param {*} cls
|
|
* @returns
|
|
*/
|
|
export function hasClass(elem, cls) {
|
|
cls = cls || '';
|
|
// 检测类名是否为''
|
|
if (cls.replace(/\s/g, '').length === 0) return false;
|
|
// 检测elem类名是否包含cls指定类名
|
|
return new RegExp(' ' + cls + ' ').test(' ' + elem.className + ' ');
|
|
}
|
|
|
|
/**
|
|
* 为元素添加类名
|
|
* @param {*} elem
|
|
* @param {*} cls
|
|
*/
|
|
export function addClass(elem, cls) {
|
|
if (!elem || !cls) return;
|
|
|
|
// 统一空白字符(避免 \n \t 等导致匹配问题)
|
|
let current = elem.className.replace(/[\t\r\n]/g, ' ').trim();
|
|
|
|
// 已存在则忽略
|
|
const classes = current.split(/\s+/);
|
|
if (classes.includes(cls)) return;
|
|
|
|
// 添加并规整
|
|
classes.push(cls);
|
|
elem.className = classes.join(' ').trim();
|
|
}
|
|
|
|
/**
|
|
* 为元素删除类名
|
|
* @param {*} elem
|
|
* @param {*} cls
|
|
*/
|
|
export function removeClass(elem, cls) {
|
|
if (!elem || !cls) return;
|
|
|
|
// 使用 classList 优先(更安全)
|
|
if (elem.classList) {
|
|
elem.classList.remove(cls);
|
|
return;
|
|
}
|
|
|
|
// 传统写法的修复版本
|
|
let klass = ' ' + elem.className.replace(/[\t\r\n]/g, ' ') + ' ';
|
|
|
|
// 持续删除目标 class
|
|
while (klass.indexOf(' ' + cls + ' ') !== -1) {
|
|
klass = klass.replace(' ' + cls + ' ', ' ');
|
|
}
|
|
|
|
// 过滤多余空格
|
|
elem.className = klass.trim().replace(/\s+/g, ' ');
|
|
}
|