基于JavaScript实现类名的添加与移除

 更新时间:2017年04月23日 11:52:06   作者:change_Y  
本文给大家分享javascript实现类名的添加与移除功能,需要的朋友参考下吧

方法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实现类名的添加与移除方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • JS判断一个数是否是水仙花数

    JS判断一个数是否是水仙花数

    水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。下面通过本文给大家分享JS判断一个数是否是水仙花数,需要的朋友参考下吧
    2017-06-06
  • 测试JavaScript字符串处理性能的代码

    测试JavaScript字符串处理性能的代码

    主要是测试了数组 push()方法与直接相加这两种在JS引擎上性能的实际处理情况。程序代码简单明了,没什么好解释的。
    2009-12-12
  • 微信小程序修改数组长度的问题的解决

    微信小程序修改数组长度的问题的解决

    这篇文章主要介绍了微信小程序修改数组长度的问题的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • 微信小程序实现动态改变view标签宽度和高度的方法【附demo源码下载】

    微信小程序实现动态改变view标签宽度和高度的方法【附demo源码下载】

    这篇文章主要介绍了微信小程序实现动态改变view标签宽度和高度的方法,涉及微信小程序事件响应及使用setData针对data数据动态操作相关实现技巧,需要的朋友可以参考下
    2017-12-12
  • Javascript 访问样式表实现代码

    Javascript 访问样式表实现代码

    Javascript访问样式表--又一篇好文章
    2009-08-08
  • js将当前时间格式转换成时间搓(自写)

    js将当前时间格式转换成时间搓(自写)

    将时间转换成时间搓的方法有很多,在本文为大家介绍下使用js将当前时间转换成时间搓 例如2013-09-11 12:12:12,感兴趣的朋友可以参考下
    2013-09-09
  • 微信小程序picker多列选择器(mode = multiSelector)

    微信小程序picker多列选择器(mode = multiSelector)

    本文主要介绍了微信小程序picker多列选择器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-07-07
  • uniapp与webview之间的相互传值的实现

    uniapp与webview之间的相互传值的实现

    这篇文章主要介绍了uniapp与webview之间的相互传值的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • JavaScript中立即执行函数实例详解

    JavaScript中立即执行函数实例详解

    javascript和其他编程语言相比比较随意,所以javascript代码中充满各种奇葩的写法,有时雾里看花,当然,能理解各型各色的写法也是对javascript语言特性更进一步的深入理解。这篇文章主要给大家介绍了关于JavaScript中立即执行函数的相关资料,需要的朋友可以参考下。
    2017-11-11
  • javascript面向对象特性代码实例

    javascript面向对象特性代码实例

    这篇文章主要介绍了javascript面向对象特性代码实例,包括类、静态成员、对象、重载,需要的朋友可以参考下
    2014-06-06

最新评论