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

yizhihongxing

实现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日

相关文章

  • vue中filters 传入两个参数 / 使用两个filters的实现方法

    在 Vue 中,可以使用 filter 过滤器来处理模板中的数据。filter 在显示数据之前对其进行处理,比如对字符串格式化、将时间格式化等等。 在 Vue 中,我们可以定义一个 filter 来处理一些数据,此时这个 filter 就是一个全局的 filter。可以被任何组件进行调用。 现在我们来详细讲解“vue中filters 传入两个参数 / 使用两…

    Vue 2023年5月27日
    00
  • vue中实现上传文件给后台实例详解

    针对“vue中实现上传文件给后台的实例详解”,我的回答将分为以下几个部分说明: 概述 前端实现步骤 后端实现步骤 示例说明1 示例说明2 1. 概述 Vue是一种现代化的JavaScript框架,它能够帮助我们快速构建交互式界面。在许多Web应用程序中,我们需要允许用户上传文件到我们的服务器。尽管Vue本身并不提供文件上传功能,但通过结合一些其他的JavaS…

    Vue 2023年5月28日
    00
  • Vue组件实现卡片动画倒计时示例详解

    下面是“Vue组件实现卡片动画倒计时示例详解”的完整攻略: 标题 一、项目介绍 介绍该项目的背景和目的,如:Vue组件实现卡片动画倒计时,可以应用在各类网页和手机应用中,方便用户知晓某个活动、限时促销等的剩余时间。 二、技术栈 列举使用的技术,如:Vue.js框架、CSS3动画等。 三、项目实现 1.基础HTML、CSS实现 通过HTML和CSS实现基本的卡…

    Vue 2023年5月29日
    00
  • Vue.js每天必学之指令系统与自定义指令

    Vue.js每天必学之指令系统与自定义指令 1. 什么是指令 在Vue.js中,指令是一种用于处理模板中特殊DOM属性的特殊语法。指令以 v- 前缀作为标识符,告诉模板编译器将该属性特殊处理。 指令可以用于动态地添加、更新和删除DOM元素。在对元素进行DOM操作的同时,指令还可以绑定Vue实例中的属性。 2. Vue指令列表 Vue提供了很多内置指令,这些内…

    Vue 2023年5月28日
    00
  • 初识 Vue.js 中的 *.Vue文件

    初识 Vue.js 中的 .vue 文件 在 Vue.js 中,.vue 文件是一个自定义的单文件组件(Single-File Component),可以将 HTML、CSS 和 JavaScript 集中到一个 .vue 文件中,并进行组件化开发。 一个 .vue 文件一般包含三部分:template(模板)、script(脚本)和 style(样式),它…

    Vue 2023年5月28日
    00
  • Pinia入门学习之实现简单的用户状态管理

    首先,我们需要了解什么是Pinia。Pinia是一款为Vue 3提供状态管理的插件,它是基于Vue 3 Reactivity API协议实现的,提供了强大的响应式状态管理功能,使得在Vue 3项目开发中可以更方便地进行状态管理。 下面,我们来详细讲解如何使用Pinia来实现简单的用户状态管理。步骤如下: 1. 安装Pinia 在Vue 3项目中,首先需要安装…

    Vue 2023年5月28日
    00
  • Vue axios 将传递的json数据转为form data的例子

    当我们使用 Vue.js 和 axios 进行数据交互时,通常会使用 JSON 数据格式来传递数据。但在某些情况下,我们需要将 JSON 数据转换成 FormData 格式,例如在使用 Form 表单上传文件时。下面是一个 Vue axios 将传递的 JSON 数据转为 FormData 的例子: 步骤一:安装 axios 首先需要安装 axios,可以使…

    Vue 2023年5月28日
    00
  • Vue 3.0 前瞻Vue Function API新特性体验

    以下是关于“Vue 3.0 前瞻Vue Function API新特性体验”的详细攻略。 什么是Vue Function API? Vue Function API是指在Vue.js 3.0中引入的一组全新的API,它们的设计目标是更好地解决组件库编写过程中出现的一些问题,如代码的可维护性、组件之间的通信以及更好的类型支持等。Vue Function API…

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