在添加或删除之前,正在使用检查classList是否包含类

Checking classList with contains if a class exists before add or remove?

本文关键字:检查 classList 包含类 是否 添加 删除      更新时间:2023-09-26

我的一位同事坚持认为,在添加或删除元素之前,首先检查元素上是否存在类是很重要的。

因此,他在代码中有很多这样的构造:

if (element.classList.contains('info')) {
    element.classList.remove('info');
}
if (!element.classList.contains('hint')) {
    element.classList.add('hint');
}

我个人认为,如果一个人把.contents()的支票去掉,什么都不会发生。

应指:

如果该类不存在,则不会删除任何内容。这句话毫无意义。

如果类已经存在,则不添加任何内容。

我的同事坚持检查是对的吗?因为不检查可能会带来一些麻烦?

或者我可以忘记那次检查吗?

显式检查毫无意义。这是浪费时间,还会使代码膨胀。

这些检查实际上是内置在add和remove类方法中的。

如果您尝试添加元素已经是其成员的类,则classList.add将忽略它。

如果您试图移除元素不是其成员的类,那么classList.remove将不会执行任何操作。

这两种方法都是正确的,没有任何意义,但在某些情况下,您可能需要使用.contains(),这完全取决于您的情况。

但是在全局范围内,可以直接删除类并不重要。如果类存在,则代码将工作,否则将不工作。

使用.className检查给定的className是否存在。

if (element.className == 'info') {
    element.classList.remove('info');
}
if (element.className == 'hint') {
    element.classList.add('hint');
}

这个代码对我来说非常有效。