基于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 相关文章推荐
prototype Element学习笔记(Element篇三)
Oct 26 Javascript
IE6下js通过css隐藏select的一个bug
Aug 16 Javascript
修改jQuery Validation里默认的验证方法
Feb 14 Javascript
JS中的substring和substr函数的区别说明
May 07 Javascript
深入理解JavaScript系列(43):设计模式之状态模式详解
Mar 04 Javascript
基于jQuery实现的旋转彩圈实例
Jun 26 Javascript
微信小程序 火车票查询实例讲解
Oct 17 Javascript
纯JavaScript手写图片轮播代码
Oct 20 Javascript
浅谈react+es6+webpack的基础配置
Aug 09 Javascript
使用Angular CLI从蓝本生成代码详解
Mar 24 Javascript
jQuery实现的滑块滑动导航效果示例
Jun 04 jQuery
用POSTMAN发送JSON格式的POST请求示例
Sep 04 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
apache和php之间协同工作的配置经验分享
2013/04/08 PHP
根据ip调用新浪api获取城市名并转成拼音
2014/03/07 PHP
php curl抓取网页的介绍和推广及使用CURL抓取淘宝页面集成方法
2015/11/30 PHP
PHP实现QQ登录实例代码
2016/01/14 PHP
php的无刷新操作实现方法分析
2020/02/28 PHP
js实现运行代码需要刷新的解决方法
2007/08/18 Javascript
JavaScript CSS修改学习第五章 给“上传”添加样式
2010/02/19 Javascript
Jquery右下角抖动、浮动 实例代码(兼容ie6、FF)
2013/08/15 Javascript
javascript编写实用的省市选择器
2015/02/12 Javascript
如何高效率去掉js数组中的重复项
2016/04/12 Javascript
SWFUpload多文件上传及文件个数限制的方法
2016/05/31 Javascript
jQuery插件HighCharts实现2D柱状图、折线图的组合多轴图效果示例【附demo源码下载】
2017/03/09 Javascript
jquery中关于bind()方法的使用技巧分享
2017/03/30 jQuery
Angular HMR(热模块替换)功能实现方法
2018/04/04 Javascript
ajax与jsonp的区别及用法
2018/10/16 Javascript
Vue指令指令大全
2019/02/09 Javascript
python列表与元组详解实例
2013/11/01 Python
Python自动登录126邮箱的方法
2015/07/10 Python
python安装oracle扩展及数据库连接方法
2017/02/21 Python
python matplotlib坐标轴设置的方法
2017/12/05 Python
pyhanlp安装介绍和简单应用
2019/02/22 Python
tensorflow:指定gpu 限制使用量百分比,设置最小使用量的实现
2020/02/06 Python
Python爬虫之Selenium实现关闭浏览器
2020/12/04 Python
html5 冒号分隔符对齐的实现
2019/07/31 HTML / CSS
New Balance法国官方网站:购买鞋子和服装
2019/09/01 全球购物
教育技术职业规划范文
2014/03/04 职场文书
农村婚礼主持词
2014/03/13 职场文书
委托书模板
2014/04/04 职场文书
工地质量标语
2014/06/12 职场文书
2014年社区妇联工作总结
2014/12/02 职场文书
小学生节水倡议书
2015/04/29 职场文书
毕业生登记表班级意见
2015/06/05 职场文书
2016开学第一课心得体会
2016/01/23 职场文书
JS实现简单控制视频播放倍速的实例代码
2021/04/18 Javascript
pytorch通过训练结果的复现设置随机种子
2021/06/01 Python
Netty结合Protobuf进行编解码的方法
2021/06/26 Java/Android