08/11
2017
在以前,要使用JavaScript来操作DOM节点的class属性比较麻烦,很多时候都要借助第三方js库。但html5新增的classList对象使这一操作变得简便多了,而且这个对象已经实现了五六年了,浏览器兼容性也比较好。(IE从IE10开始支持,其他浏览器支持得更好)
在html5中,每个DOM节点都有个classList对象,我们可以借助该对象的方法、属性来便利的操作节点的class属性。
浏览器能力检测:
"classList" in document.createElement("a"); // in 操作符用于检测索引是否在该数组中,或属性是否在该对象中。判断的是key不是value
classList对象的属性和方法如下:
element.classList.length // 返回节点的class数量 element.classList.value // 返回节点的所有class名,等价于element.className element.classList.add(string) // 给节点添加class。示例: document.body.classList.add("c1"); // 添加一个class document.body.classList.add("c1","c2","c3"); // 添加多个class element.classList.remove(string) // 从节点删除class,语法同add() element.classList.toggle(string) // 切换添加/删除class。如果不存在该class则添加,否则删除 // 如果执行的是添加操作则返回true,如果执行的是删除操作则返回false // toggle方法可以有第二个参数,根据第二个参数的结果是true还是false来添加/删除该class element.classList.contains(string) // 检查节点是否含有指定的class element.classList.item(number) // 返回指定索引的class的名字 // 其实这个方法比较麻烦,一般情况下我们可以直接在element.classList后面用序号查询。如下操作是等价的: document.body.classList[0]; document.body.classList.item(0); // 区别在于如果参数指定的class不存在,它们的返回值不同 document.body.classList[1000]; // undefined document.body.classList.item(1000); // null