javascript中使用classList操作DOM class的增加修改删除

classList实际上已经出现好多年了,因此,自然,FireFox浏览器,Chrome浏览器都支持的很。IE家族中,从IE10浏览器开始才开始认可classList能进能退的非一刀切做法。

手机上,Android 3.0+以上才开始支持,哦,该死,这很糟糕。现在手机web app要求android 2.*也要支持。实时兼容性查看点击这里

由此可见,在PC上,如果要判断是否是IE10+以及其他现代浏览器,可以试试:document.body.classList是否为undefined.

length 属性

表示元素类名的个数,只读

item()

支持一个参数,为类名的索引,返回对应的类名,例如上例:

document.body.classList.item(0);

结果是:"a".

如果索引超出范围,例如:

document.body.classList.item(3);

结果是:null.

add()

支持一个类名字符串参数。表示往类名列表中新增一个类名;如果之前类名存在,则添加忽略。例如:

document.body.classList.add("c");

document.body.classList.length // 3

此函数方法执行的返回值是undefined, 因此,classList的add()方法是无法级联的。下面的remove()方法也是如此。

remove()

支持一个类名字符串参数。表示往类名列表中移除该类名。例如:

document.body.classList.remove("c");

document.body.classList.length // 2

有点对应于jQuery中的removeClass()方法,然后者返回包装器对象本身,可级联;这里的remove()方法返回undefined.

toggle()

支持一个类名字符串参数。无则加勉,有则移除之意。若类名列表中有此类名,移除之,并返回false; 如果没有,则添加该类名,并返回true.

部分现代浏览器,例如Chrome浏览器以及Firefox 24的toggle()方法已经支持第2个参数,.toggle(token, switch). 其中参数switch为Boolean类型值,如果为true表示添加,如果为false则表示移除。并返回该Boolean值。

contains()

支持一个类名字符串参数。表示往类名列表中是否包含该类名。有点对应jQuery中的hasClass方法,注意,这里的是contains而不是contain,后面有个s哦!

返回值很易懂的。如果包含,则返回true, 不包含,则false. 例如:

document.body.classList.contains("c");  // false 因为"c"上面remove掉了

[via]http://www.zhangxinxu.com/wordpress/2013/07/domtokenlist-html5-dom-classlist-%E7%B1%BB%E5%90%8D/[/via]

评论

Popular Posts

如何提高情商(EQ)

地方门户网站项目可行性分析

快乐来自于做出「舍弃」的能力

2009年即将流行的牛逼语录:经典的我都无语了(转载)

小清新必须死

SolveigMM Video Splitter - 无损视频编辑工具(视频剪辑,合并等)

《挪威的森林》精彩篇章:永远记得我

PSP3000破解问世

不要再Best Regards了!英文Email四大问题

聪明处事72招