首页 > 解决方案 > 将类添加到创建的元素

问题描述

我的函数的参数是一个函数。它应该创建一个元素,但我仍然应该能够使用参数添加属性details

例如:

const addElement = (details) => {
    const element = document.createElement('div');
}

addElement(function() {
    element.id = 'my-div'; // Not working since element is not defined
});

好吧,我试图将元素存储在一个对象中,以便能够在该函数之外使用它。

let element = {};
const displayVideo = (type, details) => {
    element = document.createElement(type);
    element.width = 200;
    element.height = 200;
    element.classList.add('my-class'); // <--- THE PROBLEM!
    if (details) {
        details();
    }
    document.querySelector('#layer').insertBefore(element, document.querySelector('#el'));
};

displayVideo('VIDEO', function () {
    element.controls = true;
});

我的元素无法创建,因为element.classList.add('my-class');我什至没有收到错误消息。如果我删除该行,它可以工作,但我仍然希望能够向该对象添加一个类。我怎样才能做到这一点?

标签: javascript

解决方案


只需传入element函数即可。由于您只是在编辑对象的属性,因此这不会导致引用与值错误。

const addElement = (details) => {
    const element = document.createElement('div');
    if (details) details(element);
    return element;
}

const ele = addElement(function(element) {
    element.id = 'my-div';
});

console.log(ele);


推荐阅读