classList.add()插入变量而不是字符串

时间:2018-12-02 08:17:43

标签: javascript

我试图做一个循环,在每次执行时更改一个元素的类。问题是

classList.add('something')

需要字符串,我需要在其中放置一个变量,这是我的代码:

const head = document.createElement('div');

function change_head() {
    var head_class = [
        {name: "bold"},
        {name: "rainbow_head"},
        {name: "hut_head"},
        {name: "beats_head"}
    ];
    for (let i = 0; i < head_class.length; i += 1){
        diffrent_head = head_class[i];
        head.classList.add(head_class[i]);
    }
};

希望可以在此处以某种方式使用变量。

2 个答案:

答案 0 :(得分:2)

head_class数组中,您的对象带有字段name,该字段具有字符串值。使用它:

for (let i = 0; i < head_class.length; i += 1){
    head.classList.add(head_class[i].name);
}

答案 1 :(得分:1)

问题是,您需要访问.name属性才能获取字符串:

head.classList.add(head_class[i].name);

const head = document.createElement('div');

function change_head() {
    var head_class = [
        {name: "bold"},
        {name: "rainbow_head"},
        {name: "hut_head"},
        {name: "beats_head"}
    ];
    for (let i = 0; i < head_class.length; i += 1){
        diffrent_head = head_class[i];
        head.classList.add(head_class[i].name);
    }
}
change_head();
console.log(head.className);

但是有一个更好看的选择-您可以.map head_class仅将字符串(从每个字符串中提取.name属性),然后将字符串数组散布到{{1 }},导致.add仅被一次调用:

.add