基于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 no-repeat写法 背景不重复
Mar 18 Javascript
javascript面向对象之访问对象属性的两种方式分析
Jan 13 Javascript
jQuery实现平滑滚动页面到指定锚点链接的方法
Jul 15 Javascript
探析浏览器执行JavaScript脚本加载与代码执行顺序
Jan 12 Javascript
js获取页面及个元素高度、宽度的代码
Apr 26 Javascript
jquery中取消和绑定hover事件的实现代码
Jun 02 Javascript
ionic cordova一次上传多张图片(类似input file提交表单)的实现方法
Dec 16 Javascript
JS实现的Unicode编码转换操作示例
Apr 28 Javascript
vue.js学习之vue-cli定制脚手架详解
Jul 02 Javascript
使用vue2.6实现抖音【时间轮盘】屏保效果附源码
Apr 24 Javascript
Layui Table js 模拟选中checkbox的例子
Sep 03 Javascript
使用layui的layer组件做弹出层的例子
Sep 27 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
这东西价格,可以买几台TECSUN S-2000
2021/03/02 无线电
基于wordpress主题制作的具体实现步骤
2013/05/10 PHP
PHP CodeIgniter框架的工作原理研究
2015/03/30 PHP
thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法
2016/05/19 PHP
如何让动态插入的javascript脚本代码跑起来。
2007/01/09 Javascript
JavaScript中为元素加上name属性的方法
2011/05/09 Javascript
基于jquery创建的一个图片、视频缓冲的效果样式插件
2012/08/28 Javascript
javascript轻量级库createjs使用Easel实现拖拽效果
2016/02/19 Javascript
jQuery遍历json的方法分析
2016/04/16 Javascript
JavaScript中两个字符串的匹配
2016/06/08 Javascript
在windows上用nodejs搭建静态文件服务器的简单方法
2016/08/11 NodeJs
Bootstrap CSS组件之按钮组(btn-group)
2016/12/17 Javascript
js指定步长实现单方向匀速运动
2017/07/17 Javascript
javascript观察者模式实现自动刷新效果
2017/09/05 Javascript
浅谈mint-ui 填坑之路
2017/11/06 Javascript
VUE 使用中踩过的坑
2018/02/08 Javascript
用ES6的class模仿Vue写一个双向绑定的示例代码
2018/04/20 Javascript
微信小程序日历插件代码实例
2019/12/04 Javascript
[02:03]完美世界DOTA2联赛10月30日赛事集锦
2020/10/31 DOTA
python中单例常用的几种实现方法总结
2018/10/13 Python
Python运维开发之psutil库的使用详解
2018/10/18 Python
Sublime Text3最新激活注册码分享适用2020最新版 亲测可用
2020/11/12 Python
python3中calendar返回某一时间点实例讲解
2020/11/18 Python
如何设置PyCharm中的Python代码模版(推荐)
2020/11/20 Python
Django中如何用xlwt生成表格的方法步骤
2021/01/31 Python
CSS3 制作旋转的大风车(充满童年回忆)
2013/01/30 HTML / CSS
奥地利顶级内衣丝袜品牌英国站:Wolford英国
2016/08/29 全球购物
跑鞋、网球鞋、网球拍、服装及装备:Holabird Sports
2016/09/19 全球购物
KOHLER科勒美国官网:国际著名卫浴橱柜领先品牌
2020/06/27 全球购物
本科生自荐信
2014/06/18 职场文书
材料成型及控制工程专业求职信
2014/06/19 职场文书
微笑服务标语
2014/06/24 职场文书
四风问题自我剖析材料
2014/10/07 职场文书
2014年保险公司工作总结
2014/11/22 职场文书
2014年绿化工作总结
2014/12/09 职场文书
工作失职自我检讨书
2015/05/05 职场文书