Использование element.classList
.contains
метод:
element.classList.contains(class);
Это работает во всех текущих браузерах, и есть полифилы для поддержки старых браузеров.
В качестве альтернативы , если вы работаете с более старыми браузерами и не хотите использовать полифиллы для их исправления, используйте indexOf
правильно, но вы должны немного его настроить :
function hasClass(element, className) {
return (' ' + element.className + ' ').indexOf(' ' + className+ ' ') > -1;
}
В противном случае вы также получите true
, если искомый класс является частью другого имени класса.
DEMO
jQuery использует аналогичный (если не тот же) метод.
Применительно к примеру:
Поскольку это не работает вместе с оператором switch, вы можете добиться того же эффекта с помощью этого кода:
var test = document.getElementById("test"),
classes = ['class1', 'class2', 'class3', 'class4'];
test.innerHTML = "";
for(var i = 0, j = classes.length; i < j; i++) {
if(hasClass(test, classes[i])) {
test.innerHTML = "I have " + classes[i];
break;
}
}
Это также менее избыточно;)