1、传统方法:

在操作类名的时候,需要通过className属性添加、删除和替换类名。如下面例子:

1
<div class="bd user disabled">...</div>

这个div中一共有三个类名,要从中删掉一个类名,需要把这三个类分别拆开,然后进行处理,处理过程如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<script type="text/javascript">
       var className=div.className.split(/\s+/);
       //找到要删掉的类名
       var pos=-1,
           i,len;
       for (var i = 0; i < className.length; i++) {
           if(className[i]=="user"){
              pos=i;
              break;
           }
       };
       className.splice(i,1);
       div.className=className.join(" ");//将余下的类名重新拼装
   </script>

上述方面即为传统的方法。

2、html5新增方法classList(),可以完全摆脱className属性。

具体使用案例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<title>classList Example</title>
<style>
    .highlight {
        background: yellow;
    }
</style>
 
 
<div id="myDiv" class="init">Hello world!</div>
<input type="button" value="Add class" onclick="addClass()">
<input type="button" value="Remove class" onclick="removeClass()">
<input type="button" value="Toggle class" onclick="toggleClass()">
<input type="button" value="Contains class?" onclick="containsClass()">
<p>This demo works in Firefox 3.6 and Chrome 8.</p>
 
<script type="text/javascript">
    function addClass(){
        var myDiv = document.getElementById("myDiv");
        myDiv.classList.add("highlight");
    }
 
    function removeClass(){
        var myDiv = document.getElementById("myDiv");
        myDiv.classList.remove("highlight");
    }
 
    function toggleClass(){
        var myDiv = document.getElementById("myDiv");
        myDiv.classList.toggle("highlight");
    }
 
    function containsClass(){
        var myDiv = document.getElementById("myDiv");
        alert(myDiv.classList.contains("highlight"));
    }
 
</script>

注:但是目前classList属性只有FireFox3.6+和Chrome支持。

参考链接:http://www.2cto.com/kf/201409/331425.html

 

classList属性的更多相关文章

  1. 脚本化CSS类-HTML5 classList属性

    HTML元素可以有多个CSS类名,class属性保存了一个用空格隔开的类名列表.标识符class在JavaScript中是保留字,所以在JavaScript中可以用className. //如下代码设 ...

  2. HTML5实战与剖析之classList属性

    classList属性究竟是干什么的,我们先撇下classList不管.我们考虑这么一个问题,那就是我们如何将拥有多个类名的元素中的其中一个类名删除呢?梦龙较劲脑汁儿终于想到一个实现的方法.将拥有类名 ...

  3. classList属性详解

    之前我们要操作一个DOM元素的class属性,需要对这个DOM的class进行繁琐的循环判断,而现在HTML5为每个元素定义了classLlist属性,用于在元素中添加,移除及切换 CSS 类.该属性 ...

  4. classList属性和className的区别

    className的不方便之处: 在操作类名时,需要通过className属性添加,删除和替换类名.因为className中是一个字符串,所以即使只修改字符串一部分,也必须每次都设置整个字符串的值.( ...

  5. html元素是否包含另外一个元素,以及classList属性

    如何判断一个元素A包含了元素B呢?如果不用contains方法的话,如何做呢? 腾讯面试的时候也出了这道题啊,当时没看dom的知识,所以一抹黑哦... 那就判断B是否为A的child喽,那也就是A是B ...

  6. 给IE9及其以下等不支持classList属性的浏览器,添加classList属性

    // 解决IE9及其以下 不支持classList属性的问题 if (!("classList" in document.documentElement)) { Object.de ...

  7. HTML5新特性:元素的classList属性与应用

    在html5新增的classList之前, 操作元素的class用的是className这个属性,而如果要向jquery封装的hasClass, removeClass, addClass, togg ...

  8. HTML DOM classList 属性

    页面DOM里的每个节点上都有一个classList对象,程序员可以使用里面的方法新增.删除.修改节点上的CSS类.使用classList,程序员还可以用它来判断某个节点是否被赋予了某个CSS类. 添加 ...

  9. DOM 的classList 属性

    1.添加1个或多个class add(class1, class2, ...) 2.移除class remove(class1, class2, ...) 3.判断指定的类名是否存在 contains ...

随机推荐

  1. Redis 优势以及性能问题

      1. 使用redis有哪些好处? (1) 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1) (2) 支持丰富数据类型,支持string, ...

  2. c++11 可变参数模板函数

    c++11 可变参数模板函数 #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <string> #in ...

  3. python读取写入内存方法SringIO,BytesIO

    python中不仅仅可以在磁盘中写入文件,还允许直接在内存中直接写入数据:需要借助StringIO和BytesIO来实现: 1.直接操作StringIO from io import StringIO ...

  4. 【刷题】BZOJ 3531 [Sdoi2014]旅行

    Description S国有N个城市,编号从1到N.城市间用N-1条双向道路连接,满足 从一个城市出发可以到达其它所有城市.每个城市信仰不同的宗教,如飞天面条神教.隐形独角兽教.绝地教都是常见的信仰 ...

  5. Xcode一个project生成多个App

    网上有很多奇奇怪怪的复杂的方案,其实误导了,方法很简单: 打开项目属性 修改Bundle Identifiler 随便生成了四个App,如下所示:

  6. AtCoder Grand Contest 005

    AtCoder Grand Contest 005 A - STring 翻译 给定一个只包含\(ST\)的字符串,如果出现了连续的\(ST\),就把他删去,然后所有位置前移.问最后剩下的串长. 题解 ...

  7. 51nod 1636 教育改革 | DP

    51nod 1636 教育改革 | DP 题面 最近A学校正在实施教育改革. 一个学年由n天组成.A学校有m门课程,每天学生必须学习一门课,一门课程必须在一天内学习完.在学习完第i门课程后,学生们会收 ...

  8. 【bzoj4542】 Hnoi2016—大数

    http://www.lydsy.com/JudgeOnline/problem.php?id=4542 (题目链接) 题意 给出一个素数$P$,一个数串$S$,$m$个询问,每次询问区间$[l,r] ...

  9. 【poj3133】 Manhattan Wiring

    http://poj.org/problem?id=3133 (题目链接) 题意 $n*m$的网格里有空格和障碍,还有两个$2$和两个$3$.要求把这两个$2$和两个$3$各用一条折线连起来.障碍里不 ...

  10. 团体程序设计天梯赛-练习集 L1-031. 到底是不是太胖了

    比较两个实型的数: 若两者相等,也许用a>/b会出错... 我又想到了codeforces有很多这样的坑... #include <stdio.h> #include <std ...