1.如果不考虑兼容IE10以下的话,可以用HTML5中的classList API,非常方便:
let modulYes = document.querySelectorAll('.modul li')
for (let i = 0; i < modulYes.length; i++) {
modulYes[i].onclick = () => {
if (modulYes[i].classList.contains('checked')) {
//表示含有'checked'这个类名
modulYes[i].classList.remove('checked')
} else {
modulYes[i].classList.add('checked')
}
}
}
说明下:
字符串的indexOf方法是无法区分.no-js和.no-js-indeed这样的类;类名的分隔符可能不是空格,还有可能是\t等。(用下面的方法试下)
<html>
<head>
</head>
<body>
<div class="bg img" id="app">
<p class="aaa"></p>
</div>
</body>
</html>
<script>
var hasClass = (function() {
var div = document.createElement("div");
if("classList" in div && typeof div.classList.contains === "function") {
return function(elem, className) {
return elem.classList.contains(className);
};
} else {
return function(elem, className) {
var classes = elem.className.split(/\s+/);
for(var i = 0; i < classes.length; i++) {
if(classes[i] === className) {
return true;
}
}
return false;
};
}
})();
alert(hasClass(document.querySelector(".img"), "bg"));
<script>
结果:
2.兼容的方式是采用className和getAttribute(‘class’)方法:
(此条里面包含两种方式)
if (node.getAttribute('class')) { // 存在class属性
// 方式1
if (node.getAttribute('class').indexOf('test') > -1) {
console.log('包含 test 这个class');
}
// 方式2
if (node.className.indexOf('test') > -1) {
console.log('包含 test 这个class');
}
}
转自:https://blog.csdn.net/helloword_js/article/details/103277022