基于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 相关文章推荐
锋利的jQuery 要点归纳(一) jQuery选择器
Mar 21 Javascript
基于jquery的划词搜索实现(备忘)
Sep 14 Javascript
jQuery右键菜单contextMenu使用实例
Sep 28 Javascript
Javascript 面向对象编程(coolshell)
Mar 18 Javascript
为JS扩展Array.prototype.indexOf引发的问题探讨及解决
Apr 24 Javascript
JQuery与Ajax调用新浪API获取短网址的代码
Feb 07 Javascript
一个JavaScript用逗号分割字符串实例
Sep 22 Javascript
Javascript核心读书有感之词法结构
Feb 01 Javascript
bootstrap fileinput 插件使用项目总结(经验)
Feb 22 Javascript
浅谈JavaScript中的apply/call/bind和this的使用
Feb 26 Javascript
jquery Form轻松实现文件上传
May 24 jQuery
JS数组交集、并集、差集的示例代码
Aug 23 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
WIN98下Apache1.3.14+PHP4.0.4的安装
2006/10/09 PHP
php设计模式 Factory(工厂模式)
2011/06/26 PHP
PHP中实现生成静态文件的方法缓解服务器压力
2014/01/07 PHP
PHP调用VC编写的COM组件实例
2014/03/29 PHP
php文件上传你必须知道的几点
2015/10/20 PHP
php session 写入数据库
2016/02/13 PHP
PHP getName()函数讲解
2019/02/03 PHP
微信支付之JSAPI公众号支付详解
2019/05/15 PHP
Laravel中正确地返回HTTP状态码方法示例
2019/09/10 PHP
javascript 火狐(firefox)不显示本地图片问题解决
2008/07/05 Javascript
js控制web打印(局部打印)方法整理
2013/05/29 Javascript
JS随机生成不重复数据的实例方法
2013/07/17 Javascript
js实现点击按钮后给Div图层设置随机背景颜色的方法
2015/05/06 Javascript
深入分析JSON编码格式提交表单数据
2015/06/25 Javascript
javascript实现3D变换的立体圆圈实例
2015/08/06 Javascript
jquery输入数字随机抽奖特效的简单实现代码
2016/06/10 Javascript
jQuery Easyui学习教程之实现datagrid在没有数据时显示相关提示内容
2016/07/09 Javascript
妙用Bootstrap的 popover插件实现校验表单提示功能
2016/08/29 Javascript
View.post() 不靠谱的地方你知道多少
2017/08/29 Javascript
vue中for循环更改数据的实例代码(数据变化但页面数据未变)
2017/09/15 Javascript
使用vue-cli创建项目的图文教程(新手入门篇)
2018/05/02 Javascript
JS实现仿微信支付弹窗功能
2018/06/25 Javascript
使用typescript改造koa开发框架的实现
2020/02/04 Javascript
Python自定义主从分布式架构实例分析
2016/09/19 Python
Python元组拆包和具名元组解析实例详解
2018/03/26 Python
python 通过字符串调用对象属性或方法的实例讲解
2018/04/21 Python
python中PS 图像调整算法原理之亮度调整
2019/06/28 Python
python实现逻辑回归的示例
2020/10/09 Python
pycharm2020.1.2永久破解激活教程,实测有效
2020/10/29 Python
需要知道的CSS3动画技术
2010/01/01 HTML / CSS
澳大利亚波西米亚风连衣裙在线商店:Fortunate One
2019/04/01 全球购物
内业资料员岗位职责
2014/01/04 职场文书
工程采购员岗位职责
2014/03/09 职场文书
离职证明标准格式
2014/09/15 职场文书
2014离婚协议书范文(3篇)
2014/11/29 职场文书
让人感觉高大上的讲话稿怎么写?
2019/07/08 职场文书