Javascript 如何检查一个元素是否有多个类

Javascript 如何检查一个元素是否有多个类,javascript,Javascript,我想知道如何编写一个if语句,它的工作原理如下: if (element contains class 1 && class 2) { // do this } 如何编写if语句来检查多个类 是否有方法对多个类进行.contains方法检查 我目前的发现: 问题是,它似乎返回了元素包含的所有类的数组,这不是我想要的。我需要函数来检查元素是否包含我提供给它的类 在我看来,其中一个解决方案似乎要求我们创建自己的函数来实现这一点,但JS上是否有一个本机方法可以做到这一点 我对

我想知道如何编写一个if语句,它的工作原理如下:

if (element contains class 1 && class 2) {
   // do this
}
如何编写if语句来检查多个类

是否有方法对多个类进行.contains方法检查

我目前的发现:

问题是,它似乎返回了元素包含的所有类的数组,这不是我想要的。我需要函数来检查元素是否包含我提供给它的类

在我看来,其中一个解决方案似乎要求我们创建自己的函数来实现这一点,但JS上是否有一个本机方法可以做到这一点


我对这件事很陌生,我真的很感激你们在回答我的问题时表现出的耐心

您可以在元素上使用
.matches()
API,它现在得到了很好的支持:

if (element.matches(".class1.class2")) ...
它就像jQuery的内置版本
.is()


将要测试的类名放入数组中,然后使用
array.prototype.every()
检查数组的所有成员是否都存在于元素的
类列表中

console.log(['a','b'].every(e=>div.classList.contains(e)))
console.log(['a','b','c'].each(e=>div.classList.contains(e))

浏览器有一个本地API,可以让您使用DOM。jQuery并不总是需要的

您可以使用“classList.contains”方法

document.getElementById({id}).classList.contains({class}) -- returns true or flase

尽管
匹配
是答案,但如果element.classList返回一个元素的所有类,将其与您提供的类列表进行比较有多难?这是编程101。你完全正确,当然,我只是想看看是否有一个更快的方法来做这件事,因为我想我会用很多次:)再读一遍:有没有一种方法可以让
.contains
方法检查多个类?我很抱歉。。。你可以得到一个你想要检查的类数组,然后用“contains”对它进行迭代。你可以这样做。下面是一个很好的例子。是的,它不再回答这个问题了……这正是我想要的,非常感谢!:)很好的解决方案,尽管我有点不喜欢这里需要一个字符串生成器。对于包含
的类名,您的方法如何?@connexo我认为API允许使用反斜杠引用它们,就像jQuery一样,或者如果不允许,您可以使用其他类型的转义来使用CSS文件中的方法。不需要像我的方法那样进行欺骗。只需执行
[…element.classList].contains('a','c.d')
,请参见下面我的答案。我知道修改内置对象既有风险又有问题,但也很优雅。@connexo在前端世界中,这样做的方法总是不止一种:)