Add/Remove Classes With Raw Javascript

| Comments

Jquery and other sweeto js frameworks have some awesomeness to help you change the css classes of various elements on the page with ease and grace. They have some very convenient functions to add and remove classes. These are uber-useful and highly recommended for saving you precious time and gigawatts, but if you don’t have one of these tools available to you, sometimes you may want to do this in raw JavaScript.

1
2
3
$("#peace").addClass('be-still')
// or
$("#peace").removeClass('be-still')

And now for raw power:

1
document.getElementById("peace").className = "be-still"

If you want to add or remove your own, you have to write that goodness, and here’s one implementation example for your sweet pleasure. Note that this implementation uses classList first, which is a great feature to use if it’s available. As of this writing, IE still has some support problems. Thus, there’s also a fallback. You could also write your own classList shim if you’d like.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function hasClass(el, className) {
  if (el.classList)
    return el.classList.contains(className)
  else
    return !!el.className.match(new RegExp('(\\s|^)' + className + '(\\s|$)'))
}

function addClass(el, className) {
  if (el.classList)
    el.classList.add(className)
  else if (!hasClass(el, className)) el.className += " " + className
}

function removeClass(el, className) {
  if (el.classList)
    el.classList.remove(className)
  else if (hasClass(el, className)) {
    var reg = new RegExp('(\\s|^)' + className + '(\\s|$)')
    el.className=el.className.replace(reg, ' ')
  }
}

Called like:

1
2
3
4
var el = document.getElementById('peace')
addClass(el, 'be-still')
// or
removeClass(el, 'be-still')

Comments