!
也想出现在这里? 联系我们
广告位

HTML5 类名操作ClassList属性简介

常我们在操作类名时,需要通过 className 属性来添加,删除和替换类名。

因为 className 中是一个字符串,所以即使我们只是修改字符串的一部分,也要每一次都重新设置整个字符串的值。

如果一个元素有多个类名,要如何删除呢,jqeury 提供了 removeClass()这个 api,如果不用插件,自己封装,例如有下面的代码

  1. <div class="name1 name2 name3"></div>

这个元素中共有三个类名。如果要删除第一个类名 name1,需要把这三个类名拆开,删除不需要的类名,然后在将余下的类名组合后重新放回去,代码如下:

  1. function removeClass(elm,removeClassName) {
  2. //首先渠道类名字符串并拆分成数组
  3. var classNames = elm.className.split(/\s+/);
  4. var pos = -1, i, len;
  5. //找到要删的类名
  6. for (i = 0, len = classNames.length; i < len; i++){
  7. if(classNames[i] == "name1") {
  8. pos = i;
  9. break;
  10. }
  11. }
  12. if(pos == -1){
  13. throw Error("没有这个类名");
  14. }
  15. //删除类名
  16. classNames.splice(i,1);
  17. //把剩下的类名拼成字符串重新设置
  18. elm.className = classNames.join(" ");
  19. }

在传统的 javascript 中,要完成类名的删除,上面的代码步骤是必须的。

在 HTML5 中新增了一个操作类名的方式,可以让操作更加简单安全,这个方式就是为所有的元素添加 classList 属性。

这个 classList 属性是新集合类型 DOMTokenList 的实例。

与其它 DOM 集合类似,DOMTokenList 有一个表示自己包含多少个元素的 length 属性。

要取得每一个元素可以使用 item()方法,也可以使用方括号语法。

另外,这个新类型还定义了下面的一些特殊方法:

  • add(value):将指定的字符串值添加到列表中。如果值已经存在则不会添加
  • contains(value):指定列表中是否存在已给定的值。存在则返回 true,否则返回 false
  • remove(value):从列表中删除指定的字符串
  • toggle(value):如果列表中已经存在指定的值则删除它,否则将指定的值添加到列表中

当然 html5 新增了操作类名的方式 classList 他有 5 个属性,如果使用 classList,前面例子使用一句代码就可以完成了。

  1. div.classList.remove("name1");

其它的方法也能够大大的减少类似传统 js 操作的复杂性,例如:

  1. //删除"disabled"类
  2. div.classList.remove("disabled");
  3. //添加"current"类
  4. div.classList.add("current");
  5. //切换"user"类
  6. div.classList.toggle("user");
  7. //确定元素中是否包含既定的类名
  8. if (div.classList.contains("bd") && !div.classList.contains("disabled")){
  9. //执行操作
  10. )
  11. //迭代类名
  12. for (var i=0, len=div.classList.length; i < len; i++){
  13. doSomething(div.classList[i]);
  14. }

但是支持浏览器比较少(classList 兼容性有些差,不兼容 ie10 以下的 ie 浏览器), ie10+,Firefox 3.6+和 Chrome。

给TA打赏
共{{data.count}}人
人已打赏
前端学习

CSS实现隐藏滚动条并可以滚动内容

2024-10-18 14:30:23

前端学习

图片垂直水平居中CSS实现方法

2024-10-18 14:30:33

下载说明

  • 1、微码盒所提供的压缩包若无特别说明,解压密码均为weimahe.com
  • 2、下载后文件若为压缩包格式,请安装7Z软件或者其它压缩软件进行解压;
  • 3、文件比较大的时候,建议使用下载工具进行下载,浏览器下载有时候会自动中断,导致下载错误;
  • 4、资源可能会由于内容问题被和谐,导致下载链接不可用,遇到此问题,请到文章页面进行反馈,以便微码盒及时进行更新;
  • 5、其他下载问题请自行搜索教程,这里不一一讲解。

站长声明

本站大部分下载资源收集于网络,只做学习和交流使用,版权归原作者所有;若为付费资源,请在下载后24小时之内自觉删除;若作商业用途,请到原网站购买;由于未及时购买和付费发生的侵权行为,与本站无关。本站发布的内容若侵犯到您的权益,请联系本站删除,我们将及时处理!
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索