DOM:标签的classList属性

标签的classList属性,一看这个名字就是操作class类的。

这样,在className基础上,有多了一个可以操作类的方式。以前看书看的不够深入,了解的不多 !!!-_-,今天一个同学做日历作业用到了这个方法。遂看了看相关资料。记录下学习心得,新技能 get+1 。

看来,人是需要相互学习的~

废话不多,直接上内容。

标签的classList 主要用于在元素中添加,移除及切换 CSS 类。

这个在项目中太实用了。以前写jQuery的时候,对类名的操作主要依赖的就是jQuery的addClass() 和 removeClass(),以及 hasClass() 方法。现在原生态JS也支持了类似的操作,简直赞的不能再赞了~

1、classList的属性,length,返回标签类的数量。只读,不可更改值。

<div class="c1 c2 c3" id="mydiv">
    这个是demo
</div>
<script>
    let mydiv = document.getElementById("mydiv");
    console.info( mydiv.classList.length );  // 3
</script>

2、add(class1, class2, ...)  在元素中添加一个或多个类名。如果指定的类名已存在,则不会添加。

<div class="c1 c2 c3" id="mydiv">
    这个是demo
</div>
<script>
    let mydiv = document.getElementById("mydiv");
    mydiv.classList.add( "c4","c3" );  // c3 已经存在,不会重复添加
    console.info( mydiv.classList.length );  // 4
</script>

3、remove(class1, class2, ...)    移除元素中一个或多个类名。注意: 移除不存在的类名,不会报错。简直太赞了,乱移除类,也不怕~

<div class="c1 c2 c3" id="mydiv">
    这个是demo
</div>
<script>
    let mydiv = document.getElementById("mydiv");
    mydiv.classList.remove( "c4","c3" );  // c4 不存在,不会报错
    console.info( mydiv.classList.length );  // 2
</script>

4、contains(class)    返回布尔值,判断指定的类名是否存在。

可能值:true - 元素包已经包含了该类名        false - 元素中不存在该类名

<div class="c1 c2 c3" id="mydiv">
    这个是demo
</div>
<script>
    let mydiv = document.getElementById("mydiv");
    if( mydiv.classList.contains("c5") ){
        console.info("包含C5");
    }else{
        console.info("不包含C5");
    }
</script>

5、toggle(class, true|false)    在元素中切换类名。

第一个参数为要在元素中移除的类名,并返回 false;如果该类名不存在则会在元素中添加类名,并返回 true。 

第二个是可选参数,是个布尔值用于设置元素是否强制添加或移除类,不管该类名是否存在。true 添加,false 删除。

<div class="c1 c2 c3" id="mydiv">
    这个是demo
</div>
<script>
    let mydiv = document.getElementById("mydiv");
     mydiv.classList.toggle("c1");  //  存在c1,会移除它
     console.info( mydiv.classList.value ); // c2 c3
</script>
<div class="c1 c2 c3" id="mydiv">
    这个是demo
</div>
<script>
    let mydiv = document.getElementById("mydiv");
     mydiv.classList.toggle("c1",true);  // 强制添加,虽然c1存在,也不会删除它
     console.info( mydiv.classList.value ); // c1 c2 c3
</script>

注意:有无第二个参数,执行结果差异很大~!

6、item(index)   返回元素中索引值对应的类名。索引值从 0 开始。

<div class="c1 c2 c3" id="mydiv">
    这个是demo
</div>
<script>
    let mydiv = document.getElementById("mydiv");
     console.info( mydiv.classList.item(0) ); // c1
</script>

caniuse.com上面的 兼容性数据。看来IE很蛋疼。IE其实只是不支持SVG标签的操作,add,remove的多参数操作,以及toggle的第二参数等。不过IE用的少,具体使用的时候能用classList就用,做好测试。是在不能用想其他方法替代,比如jQuery。

发布了73 篇原创文章 · 获赞 97 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/weixin_42703239/article/details/89451836