前端学习之原生JS实现addClass及removeClass方法的封装

2023-10-31

addclass方法封装
HTML代码:

<div id="b1" class="two"></div>
<div id="b2" class="two three"></div>

JS代码:

var o1=document.querySelector('#b1');
var o2=document.querySelector('#b2');
    // addClass(o1,"two");
    // addClass(o2,"two");
    function addClass(obj,newCls){ 
      var preCls=obj.getAttribute('class');         
      if(preCls!=null){       
        if(preCls.indexOf(newCls)!=-1){
          return;
        }         
        newCls=preCls+" "+newCls;
      }      
      obj.className=newCls;    
    }

removeclass方法封装
HTML代码:

<div id="b1" class="two"></div>
<div id="b2" class="two three"></div>

JS代码:

//删除class
    function removeClass(obj,cls){
      var preCls=obj.getAttribute('class');
      //若对象没有class属性或者不包含要祛除的class,不执行
      if(preCls==null||preCls.indexOf(cls)==-1){
        return;
      }
      //one two three
      var clsArr=preCls.split(" ");
      console.log(clsArr);
      var index=clsArr.indexOf(cls);//判断要删除的class在数组中的位置
      console.log(index);
      clsArr.splice(index,1);//删除class      
      obj.className=clsArr.join(" ");
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

前端学习之原生JS实现addClass及removeClass方法的封装 的相关文章

  • OpenGL学习 跟着官网教程学习

    免费课程 计算机图形学OpenGL 5 2 缩放 旋转 位移 哔哩哔哩 bilibili 付费课程 计算机图形学OpenGL 合集 大礼包 腾讯课堂 我看的是免费版的 1 1 状态机 上下文 对象 GPU渲染流程 OpenGL自身是一个巨大
  • 用 Git 作对比分析工具

    使用命令 将两个文件的差异输出到一个新文件 git diff bare jrnl compsoc tex bare jrnl compsoc z tex gt diff tex
  • ios 字符串压缩

    实现对字符串进行压缩解压操作 前提需要导入libz 1 2 5 dylib 库 import BYViewController h import zipAndUnzip h interface BYViewController end im
  • 算法与数据结构 树

    树的定义 树是由n n gt 0 个结点所构成的有限集合 当 n 0时 称为空树 当n gt 0时 n 个结点满足以下条件 1 有且仅有一个称为根的结点 2 其余结点可分为 m m gt 0 个互不相交的有限集合 且每一个集合又构成一个树
  • Java 终端设备消息ID-雪花算法简化版

    Java 终端设备消息ID 雪花算法简化版 一 雪花算法 简化版 二 代码示例 三 总结 一 雪花算法 简化版 雪花算法 SnowFlake 是推特 Twitter 开源的分布式高并发环境生成消息唯一ID的方案 目前被广泛使用 雪花算法相对
  • linux如何查看ip

    这本阿里P8撰写的算法笔记 再次推荐给大家 身边不少朋友学完这本书最后加入大厂 Github 疯传 史上最强悍 阿里大佬 LeetCode刷题手册 开放下载了 Linux下查看IP地址的命令 ifconfig ifconfig命令用于查看和
  • Error: got unexpected status: BAD_REQUEST -- error validating channel creation transaction for new

    INFO 003 Endorser and orderer connections initialized Error got unexpected status BAD REQUEST error validating channel c
  • deepin下linux找不到mysql头文件的解决方法

    在deepin下安装好mysql后 发现在c语言中没有
  • What went wrong: Could not determine the dependencies of task :url_launcher:compileDebugAidl

    运行项目时候出来这个错误 1 先 flutter doctor 如果有错误 按照提示改错误 2 在运行 flutter pub cache repair 上述方法并未完全解决该问题 运行几次后还会出现上述问题 最后我把flutterSDK替
  • 数据库并发技术

    数据库并发技术 并发的提出与问题 并发造成的数据不一致 并发控制技术 封锁 封锁带来的问题与解决策略 并发调度 封锁的粒度 意向锁 并发的提出与问题 并发造成的数据不一致 并发控制技术 封锁 1 排他锁 2 共享锁 封锁带来的问题与解决策略
  • Python3.x 提示 ‘xxx ’is not a registered namespace

    产生问题场景 引入a href标签时显示student没有注册命名空间 解决办法 1 检查项目中的settings文件是否注册了应用名名称 2 在app urls下加上app name from django urls import pat
  • stylegan2 训练终极解决(包括训练环境搭建)

    背景 需要搭建stylegan2训练环境 训练自己的MAT模型 python环境依赖真实烦人 用docker镜像是方案 谚词 懂原理 可灵活搭建 要符合大脑的学习规律 懂了 而且要懂原理 stylegan2官方的github网址 GitHu
  • GO+Selenium批量关注各大网站实战 2 (今日头条,批量关注)

    作为第一个练习 我选择的是今日头条批量关注好友这个功能 今日头条每天关注量有200人限制 满了再点击关注 就会提示已达上限 所以我刷了几天 现在是4600个人 我们先来讲讲思路 1 登录自己的头条号 2 打开头条号的粉丝列表页 3 获取关注
  • HDMI接口协议

    文章目录 背景 一 HDMI简介 1 高清多媒体接口 2 DIV与HDMI 1 DVI接口 2 DVI编码 1 DVI编码时序图 2 DVI编码器示意图 3 HDMI接口 1 接口类型 2 A型接口引脚图 4 HDMI编码机制图 二 TMD
  • C++基础语法——内存管理

    目录 1 C C 中的内存管理 2 C C 中的动态内存管理 C语言的动态内存管理 C 的动态内存管理 操作内置类型 操作自定义类型 3 operator new与operator delete函数 4 new与delete的实现原理 操作
  • 关于idea中maven,pom.xml文件导jar包时没有提示,以及阿里云镜像不能用的解决办法

    最近电脑由于自己改注册表 被自己搞挂了 无奈重新装系统 之前用的idea为2019 3 5版本的 想尝尝新 随整了个2020 1 4版本的 但出现了pom xml文件导jar包没有提示的问题 网上搜的大部分都是这样 点击update按钮更新
  • STM32CubeMX时钟树(72MHZ主频配置)

    目录 一些基础概念 时钟树配置图 第一步 第二步 这里我只是配置常用的72MHZ主频 很多时候新手都在时钟树这里被劝退了 其实不知道没关系 我用STM32这么久了 也只知道大概 我们绝大多数时候不需要配置这个时钟 记住72MHZ主频配置即可

随机推荐

  • Bayer模型的颜色插值算法

    图像采集的功能一般用CCD和CMOS传感器来实现 但是这两种图像传感器在一个像素上只能采集 RGB颜色的一个分量 为了获得最佳的图像效果 需要3个图像传感器分别采集不同的颜色分量 但考虑 到产品的成本及设计复杂度 通常的数字成像设备用一个传
  • ​JVM第五讲 JVM内存结构

    JDK体系结构 Java语言的跨平台特性 JVM整体结构及内存模型 在minor gc过程中对象挪动后 引用如何修改 对象在堆内部挪动的过程其实是复制 原有区域对象还在 一般不直接清理 JVM内部清理过程只是将对象分配指针移动到区域的头位置
  • robot framework 使用三:他们主动浏览器的兼容性

    robot framework 浏览器兼容性测试 上图中黄色圈的地方默认什么都不写 是firefox浏览器 写上ie就是ie浏览器了 firefox最新版本号即可 ie须要设置 1 IE选项设置的安全页中 4个区域的启用保护模式的勾选都勾上
  • ARTS挑战打卡第十六周

    Algorithm 一周至少一道算法题 Review 阅读并点评至少一篇英文技术文章 Tip 学习至少一个技术技巧 总结和归纳在日常工作中所遇到的知识点 Share 分享一篇有观点和思考的技术文章 01 Algorthm https lee
  • 用java写个管理系统

    如果要用 Java 写一个管理系统 可以这样做 首先 确定管理系统的功能 然后设计系统的数据结构和架构 这可以通过绘制 UML 类图或流程图来完成 安装 Java 开发工具包 JDK 和集成开发环境 IDE 比如 Eclipse 或 Int
  • python报错:RuntimeError

    python报错 RuntimeError fails to pass a sanity check due to a bug in the windows runtime这种类型的错误 这种错误原因 1 当前的python与numpy版本
  • Gradle项目运行报错Could not find method XXX及解决方案

    Could not find method testCompile for arguments dependencies testCompile group junit name junit version 4 13 1 原因是较新版的gr
  • 计算机截屏窗口快捷键,电脑截屏的快捷键是什么

    电脑截屏的快捷键是什么 截屏是一种截取图片或文字的途径 也是一种计算机运用技术 通过这种技术可以从网上截取下自己感兴趣的文章图片供自己使用观看 可以帮助人们更好的去理解使用知识 是一种人人都能使用并且学会方法 可以通过一些软件实现截屏功能
  • XSS-Game level 7

    第七关过滤了 script 但未过滤尖括号 lt gt 使用双写绕过 源码中过滤了大小写 script 以及一些属性 并将参数拼接到 value 值 使用 htmlspecialchars 过滤标签 但未重新赋值给 str 所以不会产生影响
  • Google Play Services Location:显示位置的地址

    在前面的blog中讲述了怎样获取最后已知位置和接收位置更新后如何从location对象中获取用户的位置 包含经纬度的坐标 虽然纬度和经度是用于计算距离或显示地图的位置 在许多情况下 位置的地址是更为有用的 例如 如果你想让你的用户知道他们是
  • Wireshark零基础使用教程(超详细)

    Wireshark零基础使用教程 一 Wireshark是什么 二 Wireshark抓包原理 三 Wireshark安装入门 1 选择网卡 2 停止抓包 3 保存数据 四 界面介绍 五 基础操作 1 调整界面大小 2 设置显示列 1 添加
  • 一个仿 github for windows 及 windows 8 的进度条

    https github com wly2014 ProgressBar 转载于 https www cnblogs com eustoma p 4470396 html
  • dubbo_异常Exception in thread "main" org.springframework.beans.factory.UnsatisfiedDependencyException

    Exception in thread main org springframework beans factory UnsatisfiedDependencyException Error creating bean with name
  • BES2300x笔记(27) -- 声道设定与声道切换

    哈喽大家好 这是该系列博文的第二十七篇 篇 lt lt 系列博文索引 快速通道 gt gt 一 前言 前几天 有道友私信问到 BES2300如何进行声道设定 想通过硬件进行固定 那么 这一篇我们就讲讲BES平台有关声道的设定 以及如何进行硬
  • 计算机程序设计语言教案,计算机程序设计(C语言)课程教案讲稿概要.doc

    计算机程序设计 C 语言 课程教案 讲稿 教师姓名 纪澍琴 学院 部 中心 信息传播工程学院 教研室 实验室计算机基础教研室 2008年3月 长春工业大学课程教案 讲稿 与课程有关的信息 教师编号 000361 课程名称 计算机程序设计 C
  • android listview 图片闪烁,listView异步加载图片导致图片错位、闪烁、重复的问题的解决...

    androidListView是android中重要的控件 几乎每一个项目都会用到 但是在使用中我们避免不 了会出现一些问题 包括一些滑动事件的处理 例如 ListView中嵌套scrollView 容易出现listView 展现数据不全的
  • adb关闭手机系统自动更新

    下载adb工具 https mclub lenovo com cn forum php mod attachment aid NDg5ODc1Nnw4MWRhZDE4OHwxNjU0NTI0OTY1fDB8NzgzNzg5OQ 3D 3D
  • Android jni ndk crash c++bug定位

    最近遇到了一个底层c 库的问题 然而看不到是在哪里报错的 有一个方法就是用 ndk stack的方法 在cmd里面切换到adb 在电脑上的目录 然后输入adb logcat ndk stack sym F whl MyApp 替换为你的项目
  • 【C++】递归

    1 什么是递归 程序调用自身的编程技巧称为递归 递归做为一种算法在程序设计语言中广泛应用 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法 它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解 递归策略只需
  • 前端学习之原生JS实现addClass及removeClass方法的封装

    addclass方法封装 HTML代码 div class two div div class two three div JS代码 var o1 document querySelector b1 var o2 document quer