Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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_Performance_Compatibility_Classname - Fatal编程技术网

Javascript 是否在元素上使用重复的类名?

Javascript 是否在元素上使用重复的类名?,javascript,performance,compatibility,classname,Javascript,Performance,Compatibility,Classname,我发现有很多框架会在元素上添加新类名之前检查重复的类名,我认为这会降低性能 当元素具有重复的类名时,是否存在任何问题 当使用重复的类名时,它也将毫无冲突地应用CSS类 <div class="aa bb cc aa"></div> 添加类名是否可以,就像添加elem.className+='+'aa ee',即使元素有重复的类名?重复的类名没有什么“错”,只是多余而已。这可能会对性能产生很小的影响,但只有在有大量重复的情况下,才会产生很大的影响 此外,防止重复只会有

我发现有很多框架会在元素上添加新类名之前检查重复的类名,我认为这会降低性能

当元素具有重复的类名时,是否存在任何问题

当使用重复的类名时,它也将毫无冲突地应用CSS类

<div class="aa bb cc aa"></div>

添加类名是否可以,就像添加
elem.className+='+'aa ee'
,即使元素有重复的类名?

重复的类名没有什么“错”,只是多余而已。这可能会对性能产生很小的影响,但只有在有大量重复的情况下,才会产生很大的影响

此外,防止重复只会有助于保持整洁。

大量使用属性选择器

像这里

.ui.grid [class*="left floated"].column {
  margin-right: auto;
}
.ui.grid [class*="right floated"].column {
  margin-left: auto;
}

如果希望
marginleft
marginright
具有
自动值
,则必须有一个浮动的类名段
的副本(例如
Lorem

ES6提供了一个方便的API,用于添加、删除和测试DOM元素的类名:classList.add(name)和classList.remove(名称)和classList.contains(名称)

在ES6上下文中,该问题可以重新表述为:

“如果我使用.classList.add()多次添加相同的类名,然后想用classList.remove()删除该类,我是否需要多次调用classList.remove()

幸运的是,答案似乎是对.classList.remove()的一次调用就足以删除给定的类,无论您添加了多少次

我无法通过Google找到一个简单的答案,因此我编写了以下测试来告诉我它是如何工作的。使用DOM元素作为参数调用以下函数不会引发错误:

function testClassListRemove (dem)
{
  dem.classList.add ("hello");
  dem.classList.add ("hello");
  dem.classList.add ("hello");
  ok (dem.classList.contains ("hello") );

  dem.classList.remove ("hello");
  ok (!  dem.classList.contains ("hello") );

  function ok (b)
  { if (! b)
    { throw new Error ('not ok ');
    }
  }
}