基于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实现
Feb 25 Javascript
javascript中实现兼容JAVA的hashCode算法代码分享
Aug 11 Javascript
基于JavaScript创建动态Dom
Dec 08 Javascript
分享js粘帖屏幕截图到web页面插件screenshot-paste
Aug 21 Javascript
jQuery实现的倒计时效果实例小结
Apr 16 Javascript
浅谈js中的延迟执行和定时执行
May 31 Javascript
详解AngularJS2 Http服务
Jun 26 Javascript
深入理解JS的事件绑定、事件流模型
May 13 Javascript
微信小程序内拖动图片实现移动、放大、旋转的方法
Sep 04 Javascript
vue实现的上拉加载更多数据/分页功能示例
May 25 Javascript
JS实现随机抽选获奖者
Nov 07 Javascript
使用Ajax实现无刷新上传文件
Apr 12 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中mysql连接方式PDO使用详解
2015/02/25 PHP
WordPress中转义HTML与过滤链接的相关PHP函数使用解析
2015/12/22 PHP
thinkphp验证码的实现(form、ajax实现验证)
2016/07/28 PHP
javascript concat数组累加 示例
2009/09/03 Javascript
ajax 同步请求和异步请求的差异分析
2011/07/04 Javascript
JQuery入门——事件切换之hover()方法应用介绍
2013/02/05 Javascript
js类定义函数时用prototype与不用的区别示例介绍
2014/06/10 Javascript
简介JavaScript中的sub()方法的使用
2015/06/08 Javascript
JavaScript截取、切割字符串的技巧
2016/01/07 Javascript
深入理解Javascript中的自执行匿名函数
2016/06/03 Javascript
jQuery模仿京东/天猫商品左侧分类导航菜单效果
2016/06/29 Javascript
input file上传 图片预览功能实例代码
2016/10/25 Javascript
BootStrapTable服务器分页实例解析
2016/12/20 Javascript
Vue响应式原理详解
2017/04/18 Javascript
jQuery插件select2利用ajax高效查询大数据列表(可搜索、可分页)
2017/05/19 jQuery
jquery.uploadView 实现图片预览上传功能
2017/08/10 jQuery
浅谈Vue SPA 首屏加载优化实践
2017/12/15 Javascript
layer.open组件获取弹出层页面变量、函数的实例
2019/09/25 Javascript
vue 如何使用递归组件
2020/10/23 Javascript
Python中的类学习笔记
2014/09/23 Python
python实现从ftp服务器下载文件的方法
2015/04/30 Python
python超简单解决约瑟夫环问题
2015/05/12 Python
Python json 错误xx is not JSON serializable解决办法
2017/03/15 Python
Python中PyQt5/PySide2的按钮控件使用实例
2019/08/17 Python
django 简单实现登录验证给你
2019/11/06 Python
Python数据可视化:泊松分布详解
2019/12/07 Python
python 列表、字典和集合的添加和删除操作
2019/12/16 Python
Django多个app urls配置代码实例
2020/11/26 Python
Nike英国官网:Nike.com (UK)
2017/02/13 全球购物
北美个性化礼品商店:Things Remembered
2018/06/12 全球购物
Doyoueven官网:澳大利亚健身服饰和配饰品牌
2019/03/24 全球购物
英国排名第一的宠物店:PetPlanet
2020/02/02 全球购物
《小池塘》教学反思
2014/02/28 职场文书
女人创业励志语录,句句蕴含能量,激发你的潜能
2019/08/20 职场文书
导游词之南昌滕王阁
2019/11/29 职场文书
JavaScript中MutationObServer监听DOM元素详情
2021/11/27 Javascript