Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript中的样式类列表与类名称_Javascript_Html_Css - Fatal编程技术网

JavaScript中的样式类列表与类名称

JavaScript中的样式类列表与类名称,javascript,html,css,Javascript,Html,Css,我有两个DOM元素A和B,希望从A中获取所有样式类,并将它们附加到B中 我知道我可以通过以下方式将新类附加到元素,而无需擦除现有类: B.classList.add("cls1", "cls2", "cls3"); var clsa = ["cls1", "cls2", "cls3"]; B.classList.add(...clsa); 或者这样: B.classList.add("cls1", "cls2", "cls3"); var clsa = ["cls1", "cls2", "

我有两个DOM元素A和B,希望从A中获取所有样式类,并将它们附加到B中

我知道我可以通过以下方式将新类附加到元素,而无需擦除现有类:

B.classList.add("cls1", "cls2", "cls3");
var clsa = ["cls1", "cls2", "cls3"];
B.classList.add(...clsa);
或者这样:

B.classList.add("cls1", "cls2", "cls3");
var clsa = ["cls1", "cls2", "cls3"];
B.classList.add(...clsa);
现在,我的问题是,如何以
clsa
array的形式获得一个类列表

  • 我可以通过使用
    A.className
    属性,然后将其拆分为一个数组来实现这一点
  • 或者,我可以简单地将
    A.className
    附加到
    B.className
    ,如下所示:

    B.className += A.className;
    
  • 或者我可以迭代
    A.classList
    对象的组件,0:。。。N:

第二个看起来很自然。然而,有这样一种感觉,类列表,而不是类名,是对象样式类的首选“主页”。是这样吗

如果是这样的话,有没有什么优雅而清晰的方法可以做到这一点,而不用使用类名

可能是这样的:

B.classList.add(...A.classList.all);

不明显,但在Chrome中似乎有效:

B.classList.add(...A.classList);

您可以首先尝试将
classList
强制转换为一个数组,就像在中应答的那样,然后使用扩展运算符进行追加

B.classList.add([...A.classList]);