JS基础篇--HTML DOM classList 属性

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

添加类(add)

document.getElementById("myDIV").classList.add("mystyle");

为 <div> 元素添加多个类:

document.getElementById("myDIV").classList.add("mystyle", "anotherClass", "thirdClass");

移除类(remove)

使用remove方法,你可以删除单个CSS类:

document.getElementById("myDIV").classList.remove("mystyle");

移除多个类:

document.getElementById("myDIV").classList.remove("mystyle", "anotherClass", "thirdClass");

切换类(toggle)

这个方法的作用就是,当myDiv元素上没有这个CSS类时,它就新增这个CSS类;如果myDiv元素已经有了这个CSS类,它就是删除它。就是反转操作。

document.getElementById("myDIV").classList.toggle("newClassName");

myDiv.classList.toggle(‘myCssClass‘); //现在是增加
myDiv.classList.toggle(‘myCssClass‘); //现在是删除

是否存在类(contains)

检查是否含有某个CSS类:

var x = document.getElementById("myDIV").classList.contains("mystyle");

结果是true或者false

length属性

返回类列表中类的数量。
查看 <div> 元素有多少个类名:

var x = document.getElementById("myDIV").classList.length; //3

获取获取 <div> 元素的所有类名:

<div id="myDIV" class="mystyle anotherClass thirdClass">I am a DIV element</div>

var x = document.getElementById("myDIV").classList;

item(index)

返回类名在元素中的索引值。索引值从 0 开始。如果索引值在区间范围外则返回 null
获取 <div> 元素的第一个类名(索引为0):

var x = document.getElementById("myDIV").classList.item(0); //mystyle

浏览器支持


但是IE9和IE9以前的版本不支持该属性,下面这个代码可以弥补这个遗憾:(来自网友代码)

if (!("classList" in document.documentElement)) {
    Object.defineProperty(HTMLElement.prototype, ‘classList‘, {
        get: function() {
            var self = this;
            function update(fn) {
                return function(value) {
                    var classes = self.className.split(/\s+/g),
                        index = classes.indexOf(value);  

                    fn(classes, index, value);
                    self.className = classes.join(" ");
                }
            }  

            return {
                add: update(function(classes, index, value) {
                    if (!~index) classes.push(value);
                }),  

                remove: update(function(classes, index) {
                    if (~index) classes.splice(index, 1);
                }),  

                toggle: update(function(classes, index, value) {
                    if (~index)
                        classes.splice(index, 1);
                    else
                        classes.push(value);
                }),  

                contains: function(value) {
                    return !!~self.className.split(/\s+/g).indexOf(value);
                },  

                item: function(i) {
                    return self.className.split(/\s+/g)[i] || null;
                }
            };
        }
    });
} 

这儿提示一下,其他类型值转换成布尔值的对应关系,对应关系表如下所示:

其他类型值 转换成的布尔值
undefined false
null false
布尔值 不用转换
数字 0,NaN转化成false,其他数字类型转换成true
字符串 只有空字符串‘‘转换成false,其他都转换成true
对象 全部转换为true

想要了解Object.defineProperty可以参考如下两篇文章:

《JS基础篇--JS apply的巧妙用法以及扩展到Object.defineProperty的使用》

《JS基础篇--JS中的可枚举属性与不可枚举属性以及扩展》

原文地址:https://www.cnblogs.com/homehtml/p/12550097.html

时间: 2024-10-10 23:41:05

JS基础篇--HTML DOM classList 属性的相关文章

js基础篇——call/apply、arguments、undefined/null

a.call和apply方法详解 call方法: 语法:call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call 方法可以用来代替另一个对象调用一个方法.call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象.如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj. apply方法: 语法:apply([thisObj[,ar

html 操作dom classLIst 属性

1.classList 属性 可以给指定的dom 增加多个class,他是只读的,只可以使用 add() 和 remove() 方法修改. eg: document.getElementById("myDIV").classList.add("mystyle", "anotherClass", "thirdClass"); 具体见菜鸟教程:https://www.runoob.com/jsref/prop-element-cl

Vue.js基础篇实战--一个ToDoList小应用

距离开始学Vue已经过去一个多月了,总想把学到的东西柔和在一起,做点东西出来,于是有了这个Todolist小应用. 主要功能就是把一天要做的事情记录下来,还实现了: 标记完成事件 删除已完成事件 各种排序 仅显示未完成的项目 本地保存 截图看这里 用时一周,14次commits,把心中的构想基本实现了.详情请看:这里 整个过程下来,收获还是很多的, 1.对mvvm有了进一步的理解, 2.对css布局有了更多的了解. 3.更进一步理解了Vue的事件和组件机制.这些机制将应用解耦,每一部分都隔离出来

js 基础篇(点击事件轮播图的实现)

轮播图在以后的应用中还是比较常见的,不需要多少行代码就能实现.但是在只掌握了js基础知识的情况下,怎么来用较少的而且逻辑又简单的方法来实现呢?下面来分析下几种不同的做法: 1.利用位移的方法来实现 首先,我们可以在body中添加一个div并且将宽度设置成百分比(自适应页面),比例具体是相对谁的百分比的话按需求来做,在这里不多说.将图片放入到div 中. 其次,样式部分将img标签全部设置成absolute:以方便定位 最后,js部分说说逻辑,定义两个空数组,第一个数组用来保存初始的显示在页面的图

JS基础篇

                                                  JS基础 使用JS的三种方法 1,在HTML标签中,直接内嵌JS(不提倡使用) <button onclick="alert('你真点啊')">点我啊!!!</button>      >>>不符合W3C内容与行为分离的要求!!! 2.在HTML页面中,使用<script></script>包裹JS代码:   <sc

js基础篇(dom操作,字符串,this等)

首先我们来看这样一道题 <div id='foo' class='aa bb cc'></div>写出如何判断此div中是否含有aa(注:aa成立,aaa不成立) 首先,我们一定是取出class里面的这个字符串,然后我们想办法判断出这个字符串里面是否存在aa,并且只有aa. 我给大家提供了三种方法,第一种利用getAttribute方法,第二种利用getElementByClassName,第三种就是正则匹配了. 代码如下: /* ***用getAttribute方法实现 */ v

前端之js基础篇

JavaScript概述 ECMAScript和JavaScript的关系 1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript提交给国际标准化组织ECMA,希望这门语言能够成为国际标准.次年,ECMA发布262号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言称为ECMAScript,这个版本就是1.0版. 该标准一开始就是针对JavaScript语言制定的,但是没有称其为JavaScript,有两个方面的原因.一是商

HTML DOM classList 属性

页面DOM里的每个节点上都有一个classList对象,程序员可以使用里面的方法新增.删除.修改节点上的CSS类.使用classList,程序员还可以用它来判断某个节点是否被赋予了某个CSS类. 添加类(add) document.getElementById("myDIV").classList.add("mystyle"); 为 <div> 元素添加多个类: document.getElementById("myDIV").cla

笔记 js 基础笔记(Dom操作)

共同学习js,不对的地方欢迎大家指正. js Dom 操作 一 document获取节点的基本方法     1.document.getElementById('id');                                  //通过id来获取元素,返回指定的唯一元素.     2.document.getElementsByName("name");                      //通过name来获取元素,返回name='name'的集合.     3.d