基于JavaScript实现类名的添加与移除


Posted in Javascript onApril 23, 2017

方法1:使用className属性;

方法2:使用classList API;

//用于匹配类名存在与否
function reg(name){
 return new RegExp('(^|\\s)'+name+'(\\s+|$)');
}
//hasClass addClass removeClass toogleClass
var hasClass,addClass,removeClass;
if('classList' in document.documentElement){
 hasClass=function(obj,cname){
  return obj.classList.contains(cname);
 };
 addClass=function(obj,cname){
  obj.classList.add(cname);
 };
 removeClass=function(obj,cname){
  obj.classList.remove(cname);
 };
 toggleClass=function(obj,cname){
  obj.classList.toggle(cname);
 };
}else{
 hasClass=function(obj,cname){
  return reg(cname).test(obj.className);
 };
 addClass=function(obj,cname){
  if(!hasClass(obj,cname)){
   obj.className=obj.className+' '+cname; 
  }
 };
 removeClass=function(obj,cname){
  obj.className=obj.className.replace(reg(cname),' ');
 };
 toggleClass=function(obj,cname){
  var toggle=hasClass(obj,cname)?removeClass:addClass;
  toggle(obj,cname);
 };
}
//true
document.body.classList.toString() === document.body.className;

注意:这种方法每次只能传一个类名且不能级联操作,而jquery下面的类似操作是可以操作多个类名的。

所以扩展一下:

//addClass
DOMTokenList.prototype.addClass=function(str){
 tts.split(' ').forEach(function(c){
 this.add(c);
 }.bind(this));
 return this;
}
//removeClass
DOMTokenList.prototype.removeClass=function(str){
 tts.split(' ').forEach(function(t){
 this.remove(t);
 }.bind(this));
 return this;
}
//removeClass
DOMTokenList.prototype.toggleClass=function(str){
 tts.split(' ').forEach(function(t){
 this.toggle(t);
 }.bind(this));
 return this;
}

以上所述是小编给大家介绍的JavaScript实现类名的添加与移除方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JS中confirm,alert,prompt函数使用区别分析
Apr 01 Javascript
jquery操作HTML5 的data-*的用法实例分享
Aug 17 Javascript
基于jQuery实现最基本的淡入淡出效果实例
Feb 02 Javascript
基于jQuery实现仿51job城市选择功能实例代码
Mar 02 Javascript
Vue项目中引入外部文件的方法(css、js、less)
Jul 24 Javascript
JavaScript实现的搜索及高亮显示功能示例
Aug 14 Javascript
11行JS代码制作二维码生成功能
Mar 09 Javascript
Node.js中,在cmd界面,进入退出Node.js运行环境的方法
May 12 Javascript
vue 详情跳转至列表页实现列表页缓存
Mar 27 Javascript
ES6 Object属性新的写法实例小结
Jun 25 Javascript
Angular6使用forRoot() 注册单一实例服务问题
Aug 27 Javascript
js实现tab栏切换效果
Aug 02 Javascript
源码分析Vue.js的监听实现教程
Apr 23 #Javascript
Bootstrap进度条与AJAX后端数据传递结合使用实例详解
Apr 23 #Javascript
springMVC + easyui + $.ajaxFileUpload实现文件上传注意事项
Apr 23 #Javascript
Node.js中的require.resolve方法使用简介
Apr 23 #Javascript
AngularJS之ionic 框架下实现 Localstorage本地存储
Apr 22 #Javascript
vue拦截器Vue.http.interceptors.push使用详解
Apr 22 #Javascript
vue+vuex+axio从后台获取数据存入vuex实现组件之间共享数据
Apr 22 #Javascript
You might like
php 保留字列表
2012/10/04 PHP
Symfony2开发之控制器用法实例分析
2016/02/05 PHP
php计算给定日期所在周的开始日期和结束日期示例
2017/02/06 PHP
自定义Laravel (monolog)日志位置,并增加请求ID的实现
2019/10/17 PHP
JavaScript 检测浏览器和操作系统的脚本
2008/12/26 Javascript
jQuery 使用手册(六)
2009/09/23 Javascript
javascript setTimeout()传递函数参数(包括传递对象参数)
2010/04/07 Javascript
JQuery UI的拖拽功能实现方法小结
2012/03/14 Javascript
js关闭子窗体刷新父窗体实现方法
2012/12/04 Javascript
子窗体与父窗体传值示例js代码
2013/08/01 Javascript
jQuery过滤选择器用法分析
2015/02/10 Javascript
jQuery基础知识点总结(必看)
2016/05/31 Javascript
Ionic实现页面下拉刷新(ion-refresher)功能代码
2016/06/03 Javascript
图解prototype、proto和constructor的三角关系
2016/07/31 Javascript
1秒50万字!js实现关键词匹配
2016/08/01 Javascript
前端MVVM框架解析之双向绑定
2018/01/24 Javascript
js实现购物车功能
2018/06/12 Javascript
jQuery 实现批量提交表格多行数据的方法
2018/08/09 jQuery
Angular异步变同步处理方法
2018/08/13 Javascript
解决vue.js this.$router.push无效的问题
2018/09/03 Javascript
vue2.0+SVG实现音乐播放圆形进度条组件
2019/09/21 Javascript
vue excel上传预览和table内容下载到excel文件中
2019/12/10 Javascript
[04:03]DOTA2肉山黑名单梦之声 风暴之灵中文配音鉴赏
2013/07/03 DOTA
详细讲解Python中的文件I/O操作
2015/05/24 Python
Python基于回溯法子集树模板解决旅行商问题(TSP)实例
2017/09/05 Python
python3.7通过thrift操作hbase的示例代码
2020/01/14 Python
详解Python 中的容器 collections
2020/08/17 Python
AmazeUI 单选框和多选框的实现示例
2020/08/18 HTML / CSS
会计人员岗位职责
2014/03/19 职场文书
2014年居委会工作总结
2014/12/09 职场文书
求职自荐信范文(优秀篇)
2015/03/27 职场文书
魂断蓝桥观后感
2015/06/10 职场文书
消防安全主题班会
2015/08/12 职场文书
辞职申请书范本
2019/05/20 职场文书
MongoDB安装使用并实现Python操作数据库
2021/06/28 MongoDB
Java实现学生管理系统(IO版)
2022/02/24 Java/Android