美文网首页
原生JS三种方式判断元素是否存在某个类名

原生JS三种方式判断元素是否存在某个类名

作者: 唯吾听烟雨 | 来源:发表于2021-03-24 16:30 被阅读0次

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>

结果:


image.png

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

相关文章

网友评论

      本文标题:原生JS三种方式判断元素是否存在某个类名

      本文链接:https://www.haomeiwen.com/subject/ojehhltx.html