原生js实现addClass,removeClass,hasClass方法

实现addClass、removeClass、hasClass方法,可以方便地向DOM元素添加/移除class样式,同时判断是否存在某个class样式。下面是实现这三个方法的完整攻略:

1. addClass方法实现

实现addClass方法,首先需要获取DOM元素,并向元素添加一个或多个class样式。可以使用classList属性,它返回一个类似数组的对象,该对象包含元素实际应用的class值。

具体实现代码如下:

/**
 * 添加class样式
 * @param {Object} el DOM元素
 * @param {String} cls class样式
 */
function addClass(el, cls) {
  if (!cls || !el) return;
  var classes = cls.split(" ");
  for (var i = 0, len = classes.length; i < len; i++) {
    var clsName = classes[i];
    if (!el.classList.contains(clsName)) {
      el.classList.add(clsName);
    }
  }
}

这里先判断传入的参数是否为空,然后将参数cls按空格分割成数组,循环遍历该数组,并判断元素是否已经存在class样式,若不存在则通过classList.add()方法添加class样式。

例如:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>示例1</title>
    <style>
      .red {
        color: red;
      }
      .blue {
        color: blue;
      }
    </style>
  </head>
  <body>
    <h1 id="title">Hello World</h1>
    <script>
      var title = document.getElementById("title");
      addClass(title, "red");
      addClass(title, "blue");
    </script>
  </body>
</html>

2. removeClass方法实现

实现removeClass方法,同样需要获取DOM元素,并从元素中删除一个或多个class样式。同样可以使用classList属性来获取元素实际应用的class值。

具体实现代码如下:

/**
 * 移除class样式
 * @param {Object} el DOM元素
 * @param {String} cls class样式
 */
function removeClass(el, cls) {
  if (!cls || !el) return;
  var classes = cls.split(" ");
  for (var i = 0, len = classes.length; i < len; i++) {
    var clsName = classes[i];
    if (el.classList.contains(clsName)) {
      el.classList.remove(clsName);
    }
  }
}

这里同样先判断传入的参数是否为空,然后将参数cls按空格分割成数组,循环遍历该数组,并判断元素是否存在class样式,若存在则通过classList.remove()方法移除class样式。

例如:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>示例2</title>
    <style>
      .red {
        color: red;
      }
      .blue {
        color: blue;
      }
    </style>
  </head>
  <body>
    <h1 id="title" class="red blue">Hello World</h1>
    <script>
      var title = document.getElementById("title");
      removeClass(title, "red");
    </script>
  </body>
</html>

3. hasClass方法实现

实现hasClass方法,也需要获取DOM元素,判断元素是否含有某个class样式。可以使用classList属性来获取元素实际应用的class值。

具体实现代码如下:

/**
 * 是否含有class样式
 * @param {Object} el DOM元素
 * @param {String} cls class样式
 * @returns {Boolean}
 */
function hasClass(el, cls) {
  if (!cls || !el) return false;
  return el.classList.contains(cls);
}

这里同样先判断传入的参数是否为空,然后使用classList.contains()方法判断元素是否存在class样式。

例如:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>示例3</title>
    <style>
      .red {
        color: red;
      }
      .blue {
        color: blue;
      }
    </style>
  </head>
  <body>
    <h1 id="title" class="red blue">Hello World</h1>
    <script>
      var title = document.getElementById("title");
      console.log(hasClass(title, "red")); // true
      console.log(hasClass(title, "green")); // false
    </script>
  </body>
</html>

通过以上方法的组合使用,可以方便地操作DOM元素的class样式,实现页面效果的动态变化。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:原生js实现addClass,removeClass,hasClass方法 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • AntV+Vue实现导出图片功能

    AntV 是 Ant Design 团队出品的数据可视化解决方案,而 Vue 是当下广泛使用的前端框架之一。本文将介绍如何在 Vue 项目中使用 AntV 实现导出图片功能。具体实现流程如下: 1. 环境搭建 在 Vue 项目中使用 AntV,需要先安装 @antv/g2 和 @antv/data-set 两个依赖包: npm install @antv/g…

    Vue 2023年5月28日
    00
  • Vite开发环境搭建详解

    Vite开发环境搭建详解 Vite是一款现代化的前端开发工具,它可以快速创建和启动本地开发服务器,具有快速冷重载、简单的配置和高效的构建等特点。本篇文章将详细讲解如何搭建Vite开发环境。 环境安装与配置 安装Node.js Vite依赖Node.js运行环境,首先需要在官网(https://nodejs.org/)下载Node.js安装包进行安装。安装完成…

    Vue 2023年5月27日
    00
  • 优化Vue中date format的性能详解

    好的。 首先,你需要知道在 Vue.js 中如何处理日期格式化的问题。你可以使用 moment.js 或者 date-fns 等第三方库。这些库能够让日期处理变得更加方便和可靠。 但是,使用第三方库会引入额外的代码和依赖,可能会影响网站的性能。因此,优化日期格式化的性能就变得十分必要。 以下是优化日期格式化性能的几个步骤: 步骤一:避免重复计算 Vue 中的…

    Vue 2023年5月29日
    00
  • 前端vue3使用axios调用后端接口的实现方法

    当前端使用Vue3框架时,常常需要通过HTTP请求与后端进行交互从而实现前后端数据的交互。而axios作为一个基于Promise的HTTP客户端,已经成为前端开发中最常用的HTTP请求工具之一。下面是Vue3前端使用axios调用后端接口的实现方法攻略: 1. 安装axios 使用npm可以很容易地安装axios,只需要在项目根目录下运行以下命令即可: np…

    Vue 2023年5月27日
    00
  • 深入了解Vue.js 混入(mixins)

    下面是详细的讲解以及示例说明: 1. 什么是混入(mixins)? 混入(mixins)在Vue.js中是一种可复用组件的方式,这种方式的最大优点是可以将多个组件要共用的属性、方法、生命周期钩子等捆绑在一起,然后将该混入模块引入到多个组件中利用。 在具体使用时,混入模块的代码会被合并到引入了混入模块的组件中。这种方式使得组件的代码可读性更强,且方便多个组件间…

    Vue 2023年5月27日
    00
  • Vue中ref、reactive、toRef、toRefs、$refs的基本用法总结

    以下是Vue中ref、reactive、toRef、toRefs、$refs的完整攻略: 1. ref ref 可以将组件或DOM元素在父组件中进行标识。同时,也可以在父组件中使用 $refs 访问到子组件或DOM元素。使用ref的方式如下: <template> <div> <input type="text&quo…

    Vue 2023年5月28日
    00
  • vue3 hook自动导入原理解析

    我来为你详细讲解一下“vue3 hook自动导入原理解析”的攻略。 什么是Vue3 Hook Vue3中,为了更好地组织代码,同时也为了解决vue2中使用mixin会出现命名冲突的问题,新增了Hook的概念。Hook实际上就是一些特定的函数,它们和组件生命周期函数类似,但是可以被任意组合使用,而且可以被多个组件复用。Vue3中内置了多个Hook,例如useS…

    Vue 2023年5月28日
    00
  • 浅谈Vue.js 中的 v-on 事件指令的使用

    浅谈Vue.js 中的 v-on 事件指令的使用 介绍 在Vue.js中,v-on指令主要用于监听DOM事件并执行一些JavaScript代码。它可以绑定事件处理函数并在事件触发时自动调用这些函数。 基本语法 在HTML元素中使用v-on指令,绑定DOM事件的处理函数,例如: <button v-on:click="handleClick&q…

    Vue 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部