35 lines
1.2 KiB
JavaScript
35 lines
1.2 KiB
JavaScript
/**
|
|
* @interface CreateElementProps
|
|
* @type {Object}
|
|
* @property {string} tagName - имя создаваемого тега
|
|
* @property {Node} parentNode - родительский Node в который поместить элемент
|
|
* @property {Object<string, string>} options - опции, которые можно присвоить объекту
|
|
* @property {Object<string, string>} args - аргументы, которые нужно прикрепить к Node
|
|
*/
|
|
|
|
/**
|
|
* Функция создания элементов
|
|
* @function createElement
|
|
* @param {CreateElementProps} createElementProps - параметры для функции
|
|
* @returns {Node}
|
|
*/
|
|
export const createElement = (createElementProps) => {
|
|
const {tagName, parentNode, options, args} = createElementProps;
|
|
const element = document.createElement(tagName);
|
|
if (options) {
|
|
Object.entries(options)
|
|
.forEach(([key, value]) => {
|
|
element[key] = value;
|
|
});
|
|
}
|
|
|
|
if (args) {
|
|
Object.entries(args)
|
|
.forEach(([attr, value]) => {
|
|
element.setAttribute(attr, value);
|
|
});
|
|
}
|
|
parentNode.appendChild(element);
|
|
return element;
|
|
};
|