基于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代码
Nov 04 Javascript
ECMAScript5(ES5)中bind方法使用小结
May 07 Javascript
PageSwitch插件实现100种不同图片切换效果
Jul 28 Javascript
基于Javascript实现返回顶部按钮
Feb 29 Javascript
KnockoutJS 3.X API 第四章之数据控制流with绑定
Oct 10 Javascript
Vue2单一事件管理组件通信
May 09 Javascript
使用selenium抓取淘宝的商品信息实例
Feb 06 Javascript
详解webpack 热更新优化
Sep 13 Javascript
详解微信小程序文件下载--视频和图片
Apr 24 Javascript
vue 2.5.1 源码学习 之Vue.extend 和 data的合并策略
Jun 04 Javascript
使用React代码动态生成栅格布局的方法
May 24 Javascript
详解Vue 数据更新了但页面没有更新的 7 种情况汇总及延伸总结
May 28 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也可以?成Shell Script
2006/10/09 PHP
PHP CURL 多线程操作代码实例
2015/05/13 PHP
Symfony2 session用法实例分析
2016/02/04 PHP
解决php-fpm.service not found问题的办法
2017/06/06 PHP
Yii2 中实现单点登录的方法
2018/03/09 PHP
关于document.cookie的使用javascript
2008/04/11 Javascript
JavaScript 原型与继承说明
2010/06/09 Javascript
jQuery中调用WebService方法小结
2011/03/28 Javascript
js replace正则表达式应用案例讲解
2013/01/17 Javascript
JS获取html对象的几种方式介绍
2013/12/05 Javascript
函数window.open实现关闭所有的子窗口
2015/08/03 Javascript
js实现具有高亮显示效果的多级菜单代码
2015/09/01 Javascript
jQuery基于ajax()使用serialize()提交form数据的方法
2015/12/08 Javascript
AngularJS入门教程之路由与多视图详解
2016/08/19 Javascript
JavaScript获取URL中参数querystring的方法详解
2016/10/11 Javascript
html中鼠标滚轮事件onmousewheel的处理方法
2016/11/11 Javascript
jQuery实现的背景颜色渐变动画效果示例
2017/03/24 jQuery
JS简单实现父子窗口传值功能示例【未使用iframe框架】
2017/09/20 Javascript
Vue 进入/离开动画效果
2017/12/26 Javascript
解决bootstrap模态框数据缓存的问题方法
2018/08/10 Javascript
Vuejs学习笔记之使用指令v-model完成表单的数据双向绑定
2019/04/29 Javascript
vue实现直播间点赞飘心效果的示例代码
2019/09/20 Javascript
vue实现购物车列表
2020/06/30 Javascript
如何在 Vue 中使用 JSX
2021/02/14 Vue.js
[01:18]PWL开团时刻DAY10——一拳超人
2020/11/11 DOTA
Python and、or以及and-or语法总结
2015/04/14 Python
Python RabbitMQ消息队列实现rpc
2018/05/30 Python
华为2019校招笔试题之处理字符串(python版)
2019/06/25 Python
Python 切分数组实例解析
2019/11/07 Python
Python 随机生成测试数据的模块:faker基本使用方法详解
2020/04/09 Python
使用pymysql查询数据库,把结果保存为列表并获取指定元素下标实例
2020/05/15 Python
matplotlib阶梯图的实现(step())
2021/03/02 Python
YOOX美国官方网站:全球著名的多品牌时尚网络概念店
2016/09/11 全球购物
Hush Puppies澳大利亚官网:舒适的男女休闲和正装鞋
2019/08/24 全球购物
2015年七七事变78周年纪念活动方案
2015/05/06 职场文书
HR必备:超全面的薪酬待遇管理方案!
2019/07/12 职场文书