基于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.js 的时候应该特别注意的几个问题.
Apr 12 Javascript
jQuery实现浮动层随浏览器滚动条滚动的方法
Sep 22 Javascript
jQuery实现的鼠标经过时变宽的效果(附demo源码)
Apr 28 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【二】
May 10 Javascript
angular实现form验证实例代码
Jan 17 Javascript
关于前后端json数据的发送与接收详解
Jul 30 Javascript
详解react-webpack2-热模块替换[HMR]
Aug 03 Javascript
JS实现数组的增删改查操作示例
Aug 29 Javascript
javascript面向对象三大特征之封装实例详解
Jul 24 Javascript
详解element-ui表格中勾选checkbox,高亮当前行
Sep 02 Javascript
JavaScript Window窗口对象属性和使用方法
Jan 19 Javascript
vue3.0 自适应不同分辨率电脑的操作
Feb 06 Vue.js
源码分析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
4.与数据库的连接
2006/10/09 PHP
PHP5 操作MySQL数据库基础代码
2009/09/29 PHP
JS的IE和Firefox兼容性集锦
2006/12/11 Javascript
js 鼠标拖动对象 可让任何div实现拖动效果
2009/11/09 Javascript
JavaScript编程开发中的五个实用小技巧
2010/07/22 Javascript
Javascript学习笔记-详解in运算符
2011/09/13 Javascript
JS中window.open全屏命令解析及使用示例
2013/12/11 Javascript
html5+javascript实现简单上传的注意细节
2016/04/18 Javascript
获取今天,昨天,本周,上周,本月,上月时间(实例分享)
2017/01/04 Javascript
jQuery ajax请求struts action实现异步刷新
2017/04/19 jQuery
JS实现批量上传文件并显示进度功能
2017/06/27 Javascript
jQuery Easyui Treegrid实现显示checkbox功能
2017/08/08 jQuery
关于vuejs中v-if和v-show的区别及v-show不起作用问题
2018/03/26 Javascript
解决Idea、WebStorm下使用Vue cli脚手架项目无法使用Webpack别名的问题
2019/10/11 Javascript
微信小程序页面间传递数组对象方法解析
2019/11/06 Javascript
[01:01:43]EG vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
python创建临时文件夹的方法
2015/07/06 Python
老生常谈Python之装饰器、迭代器和生成器
2017/07/26 Python
Python 确定多项式拟合/回归的阶数实例
2018/12/29 Python
解决django后台样式丢失,css资源加载失败的问题
2019/06/11 Python
Python模块汇总(常用第三方库)
2019/10/07 Python
Python二次规划和线性规划使用实例
2019/12/09 Python
python GUI库图形界面开发之PyQt5布局控件QHBoxLayout详细使用方法与实例
2020/03/06 Python
python正则表达式 匹配反斜杠的操作方法
2020/08/07 Python
利用css3 translate完美实现表头固定效果
2017/02/28 HTML / CSS
CSS3+font字体文件实现圆形半透明菜单具体步骤(图解)
2013/06/03 HTML / CSS
会计系个人求职信范文分享
2013/12/20 职场文书
车间组长岗位职责
2013/12/20 职场文书
大学信息公开实施方案
2014/03/09 职场文书
班干部演讲稿
2014/04/24 职场文书
植树节活动总结
2014/04/30 职场文书
领导班子整改方案
2014/10/25 职场文书
2014年大学学生会工作总结
2014/12/02 职场文书
助学金感谢信
2015/01/20 职场文书
MySQL的InnoDB存储引擎的数据页结构详解
2022/03/03 MySQL
Python实现对齐打印 format函数的用法
2022/04/28 Python