@starzhuimeng/formula-editor
Version:
A configurable formula editor with customizable symbols
89 lines • 2.36 kB
JavaScript
;
/**
* DOM操作工具函数
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.createElement = createElement;
exports.appendChildren = appendChildren;
exports.setStyles = setStyles;
exports.addEventListeners = addEventListeners;
exports.removeEventListener = removeEventListener;
exports.querySelector = querySelector;
exports.generateId = generateId;
/**
* 创建DOM元素
* @param tag 标签名
* @param className 类名
* @param attributes 属性对象
* @returns HTMLElement
*/
function createElement(tag, className, attributes) {
const element = document.createElement(tag);
if (className) {
element.className = className;
}
if (attributes) {
Object.entries(attributes).forEach(([key, value]) => {
element.setAttribute(key, value);
});
}
return element;
}
/**
* 将元素添加到父元素
* @param parent 父元素
* @param children 子元素列表
*/
function appendChildren(parent, ...children) {
children.forEach(child => parent.appendChild(child));
}
/**
* 设置元素样式
* @param element 目标元素
* @param styles 样式对象
*/
function setStyles(element, styles) {
Object.entries(styles).forEach(([key, value]) => {
if (value !== undefined) {
element.style[key] = value;
}
});
}
/**
* 添加事件监听器
* @param element 目标元素
* @param eventType 事件类型
* @param handler 事件处理函数
* @param options 事件选项
*/
function addEventListeners(element, events) {
Object.entries(events).forEach(([eventType, handler]) => {
element.addEventListener(eventType, handler);
});
}
/**
* 移除事件监听器
* @param element 目标元素
* @param eventType 事件类型
* @param handler 事件处理函数
*/
function removeEventListener(element, eventType, handler) {
element.removeEventListener(eventType, handler);
}
/**
* 查找元素
* @param selector 选择器
* @param parent 父元素(可选,默认为document)
* @returns 匹配的元素或null
*/
function querySelector(selector, parent = document) {
return parent.querySelector(selector);
}
/**
* 生成唯一ID
* @returns 唯一ID字符串
*/
function generateId() {
return `fe-${Math.random().toString(36).substring(2, 10)}`;
}
//# sourceMappingURL=dom.js.map