zoukankan      html  css  js  c++  java
  • JS:操作样式表2 :用JS实现添加和删除一个类名的功能(addClass()和removeClass())

    var box = document.getElementById("box");

    box.id = "pox";

    将id = “box”,改为id = “pox”;

    但id = “box”依然存在,这样就不符合W3C标准。不建议使用。

    box.className = "box5"; 将会把原来的className 清除只有一个类名为box5的类。

    如果想有用className避免这种缺陷,可以写成 box.className ="box5 box6 ....",但是这种方法太过麻烦,会造成冗余,因此可以用下面的方法:

     原生的js中并没有添加/删除类这些属性或方法,为了实现这一功能,因此写出了一下两个函数:

    1.js原生的addClass()

    首先判断是否有要添加的类名:

      function hasClass(element, cName){
        return !!element.className.match(new RegExp('(\s|^)' + cName + '(\s|$)'));
      }

    判断后,如果没有则添加

      function addClass(element, cName){
        if (!hasClass(element, cName)) {
          return element.className += " " + cName;
        };

      }

    addClass(box,"box6");
    addClass(box,"box7");

    此时的addClass()添加的类并不会覆盖掉原来的类,减少了冗余。

    2.从多个类中删除一个元素 removeClass,其余类保留:

      function removeClass(element,cName){
        if (hasClass(element,cName)) {
          element.className = element.className.replace(new RegExp('(\s|^)' + cName + '(\s|$)'), " ");
        };
      }

      removeClass(box,"box6"); //test,box,box7

  • 相关阅读:
    golang以服务方式运行
    nginx重写规则配置
    PHP的 parse_ini_file 解析配置文件
    在Yii2中集成Markdown编辑器
    理解 is_callable
    Composer安装yii2-imagine 压缩,剪切,旋转,水印
    Yii2 基于header 实现接口版本控制
    (1) laravel php artisan list make
    php 阿里云国内短信实例
    php 云片国外短信实例
  • 原文地址:https://www.cnblogs.com/wine/p/5045446.html
Copyright © 2011-2022 走看看