# Using classlist.contains on Multiple Elements

**URL:** https://forum.kirupa.com/t/using-classlist-contains-on-multiple-elements/633888
**Category:** web dev
**Created:** [October 27, 2015, 9:13pm UTC](https://forum.kirupa.com/t/using-classlist-contains-on-multiple-elements/633888 "2015-10-27T21:13:53Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![kirupa](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/kirupa/32/11616_2.png) [@kirupa](https://forum.kirupa.com/u/kirupa)
#### Post date: [October 27, 2015, 9:13pm UTC](https://forum.kirupa.com/t/using-classlist-contains-on-multiple-elements/633888/1 "2015-10-27T21:13:53Z")

</div>

This is a [response to a comment](http://www.kirupa.com/html5/using_the_classlist_api.htm#comment-2329800807) on how to use the `classList.contains` method to check for the existence of multiple classes. Since this isn’t built-in to the `classList` API directly, I threw this together quickly:

```
DOMTokenList.prototype.containsMany = function(classes) {
  var items = classes.split(' ');

  for (var i = 0; i < items.length; i++) {
    var item = items[i];

    if (this.contains(item) == false) {
      return false;
    }
  }

  return true;
}

```

To test this out, I used the following HTML:

```
<div class="batman joker bain riddler batgirl robin alfred"></div>

```

And this was the JS that put it all to good use:

```
var el = document.querySelector("div");
var test = el.classList.containsMany("batman kirupa robin");
document.writeln(test);

```

I tried a few variations, and it all seemed to work. If you run into a breaking case, let me know and I can try to fix it quickly 😄

Cheers,  
Kirupa

---

<div class="post-metadata">

### Author: ![krilnon](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/krilnon/32/34_2.png) [@krilnon](https://forum.kirupa.com/u/krilnon)
#### Post date: [October 28, 2015, 6:06am UTC](https://forum.kirupa.com/t/using-classlist-contains-on-multiple-elements/633888/2 "2015-10-28T06:06:37Z")

</div>

I’d just see what [jQuery does differently](https://github.com/jquery/jquery/blob/master/src/attributes/classes.js#L124), then see if that suggests any error cases.

---

<div class="post-metadata">

### Author: ![kirupa](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/kirupa/32/11616_2.png) [@kirupa](https://forum.kirupa.com/u/kirupa)
#### Post date: [October 28, 2015, 5:33pm UTC](https://forum.kirupa.com/t/using-classlist-contains-on-multiple-elements/633888/3 "2015-10-28T17:33:08Z")

</div>

I looked at it, but I couldn’t see any differences. Since I am relying on classList under the covers for my implementation, I’m hoping that any issues would be with classList and not with what I have going haha. Also, that JS formatting with _that_ many spaces is something I haven’t encountered before!

🐘

---

<div class="post-metadata">

### Author: ![krilnon](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/krilnon/32/34_2.png) [@krilnon](https://forum.kirupa.com/u/krilnon)
#### Post date: [October 29, 2015, 4:26am UTC](https://forum.kirupa.com/t/using-classlist-contains-on-multiple-elements/633888/4 "2015-10-29T04:26:37Z")

</div>

I think that’s just how monospace tabs render in HTML.

---

<div class="post-metadata">

### Author: ![Fedor\_Vlasenko](https://avatars.discourse-cdn.com/v4/letter/f/8edcca/32.png) [@Fedor\_Vlasenko](https://forum.kirupa.com/u/Fedor_Vlasenko)
#### Post date: [February 1, 2019, 7:36pm UTC](https://forum.kirupa.com/t/using-classlist-contains-on-multiple-elements/633888/5 "2019-02-01T19:36:53Z")

</div>

```
// author Fedor Vlasenko vlasenkofedor@gmail.com
const containsMany = (el, classes) => Array.isArray(classes) && !!classes.length && classes.every(cls => el.classList.contains(cls));
let el = document.querySelector("div");
let test1 = containsMany(el, ["batman", "kirupa", "robin"]);
let test2 = containsMany(el, ["batman", "alfred", "robin"]);
let test3 = containsMany(el, []);
let test4 = containsMany(el, [""]);
let test5 = containsMany(el);
let test6 = containsMany(el, "batman");
document.writeln("test1: " , test1 ,"<br>");
document.writeln("test2: " , test2 ,"<br>");
document.writeln("test3: " , test3 ,"<br>");
document.writeln("test4: " , test4 ,"<br>");
document.writeln("test5: " , test5 ,"<br>");
document.writeln("test6: " , test6 ,"<br>");
```
