好的。这个问题已经很老了,但只是为了练习在 stackoverflow 上回答答案并帮助可能在此页面上绊倒的任何其他人。这里有一些你可以(和一些你应该)用来改变HTMLElement(你选择的元素)的类属性的方法。
考虑 Alex 交付的代码。
var myArray = []; // A new array.
myArray[0] = 'foo'; // With 'foo' on 0
myArray[1] = 'bar'; // and 'bar' on 1.
这将创建一个很酷的数组,其中键为 0,值为“foo”,键为 1,值为“bar”。这些是我们想要作为单个字符串放入类中的值。就像我们在编写 HTML 时应该输入类属性一样。
您可以通过将数组连接到单个字符串并将其分配给元素的 className 属性来做到这一点。像这样:
// Becomes something like
// myElement.className = "foo bar";
myElement.className = myArray.join(' ');
an的join方法array
返回string
从数组的值创建的 a。在这种情况下,我们的返回string
是用空格分隔的。然后使用该字符串来更改className
元素的完整值。
您还可以遍历数组并将数组中每个键的值分配给元素的类。您可以通过使用for
循环并使用classList
element 的属性来完成此操作。该classList
属性访问对元素类的控制。他们有方法来操作类,比如add
.
for(var i = 0; i < myArray.length; i++) {
myElement.classList.add(myArray[i]); // i representing each key in array
}
一个接一个,您现在已将所有类添加到 element 。另一种方法是使用数组的forEach方法。该forEach
方法循环遍历 中的每个键array
并使其值可用。现代浏览器支持此功能。犬用参考
myArray.forEach(function(cls) { // cls representing each value of myArray.
myElement.classList.add(cls);
});
或者使用ES6和箭头函数语法来做几乎相同的事情,但用另一种写下函数的方式。
myArray.forEach(cls => { // cls representing each value of myArray.
myElement.classList.add(cls);
});
关于相同的过程,但具有不同的风格,称为函数式编程。激动人心的东西!
你想做更多的ES6吗?尝试扩展运算符语法。简而言之,扩展运算符可以将数组的每个键单独布置到方法中。并且对象的add
方法classList
支持多个参数。像这样。
// Becomes something like
// myElement.classList.add("foo", "bar");
myElement.classList.add(...myArray);
选择一个选项。确定其中哪些适合您的项目。您需要古老的浏览器支持吗?使用第一个示例。下一个例子更现代,依此类推。不明白它的作用或含义?尝试阅读可以找到的文档和示例,直到点击为止。我试图用我认为有意义的尽可能多的文档来支持我的示例。
阅读 Mozilla Developer Network 的这些文档,其中解释了元素的classList和className属性提供了什么以及您可以使用它们做什么。
它们是学习如何使用 JavaScript 进行 DOM 操作的基础部分。Sitepoint 文章解释了 DOM 操作的基础知识。