详解原生JS动态添加和删除类

下面就详细讲解一下“详解原生JS动态添加和删除类”的完整攻略。

概述

在前端开发中,动态改变元素的样式是十分常见的需求,其中动态添加类名和动态删除类名就是两种常见的实现方式。通过动态改变元素的类名,可以轻松实现样式的交互效果和动画效果。

动态添加类名

方法一:使用Element.classList方法

Element.classList是DOM API提供的一个属性,它包含了元素的class列表。使用classlist,我们可以轻松对元素的class进行添加、删除和切换操作。

下面是向元素中动态添加类名的示例代码:

// 获取目标元素
const targetElem = document.querySelector('.target');

// 添加类名
targetElem.classList.add('new-class');

在这个示例中,我们首先通过querySelector获取了目标元素,然后使用classList.add()方法向目标元素中添加了一个名为new-class的类名。

方法二:直接修改元素的className属性

Element对象还有一个className属性,它可以读取或设置元素的class属性。通过className属性的操作,我们也可以轻松实现类名的添加:

// 获取目标元素
const targetElem = document.querySelector('.target');

// 添加类名
targetElem.className += 'new-class ';

在这个示例中,我们同样首先获取了目标元素,并通过直接修改className属性向其添加了new-class类名。

动态删除类名

方法一:使用Element.classList方法

要删除类名,我们同样可以使用Element.classList提供的相关方法。相比于添加类名,删除类名只需要调用ClassList.remove()方法即可:

// 获取目标元素
const targetElem = document.querySelector('.target');

// 删除类名
targetElem.classList.remove('old-class');

在这个示例中,我们通过classList.remove()方法删除了目标元素上的一个名为old-class的类名。

方法二:直接修改元素的className属性

与动态添加类名时不同,当我们要删除类名时不能简单地使用+=对className属性进行操作,因为这样会污染元素原先的类名。正确的做法是使用字符串的replace()方法:

// 获取目标元素
const targetElem = document.querySelector('.target');

// 删除类名
targetElem.className = targetElem.className.replace('old-class', '');

在这个示例中,我们同样通过获取目标元素,然后使用字符串的replace()方法,将目标元素上的old-class类名删除了。

示例说明

示例一:动态切换元素的类名

动态切换元素的类名是一种常见的实现样式交互效果的方式。下面的示例中,我们给一个按钮添加了一个点击事件,点击按钮时会让按钮变成红色,再次点击时则会变回原样:

<!DOCTYPE html>
<html>
    <head>
        <style>
            .btn {
                background-color: green;
                color: #fff;
                padding: 10px;
                border: none;
                cursor: pointer;
                border-radius: 5px;
            }
            .btn.active {
                background-color: red;
            }
        </style>
    </head>
    <body>
        <button class="btn" id="toggleBtn">
            点击切换样式
        </button>
        <script>
            const toggleBtn = document.getElementById('toggleBtn');
            toggleBtn.addEventListener('click', function() {
                toggleBtn.classList.toggle('active');
            })
        </script>
    </body>
</html>

在这个示例中,我们首先在CSS中定义了两个类名:.btn和.btn.active。.btn类名表示按钮的默认样式,.btn.active表示按钮的激活状态。然后我们给按钮添加了一个click事件,通过按钮的classList.toggle()方法,切换了按钮的active类名,使按钮实现了样式的动态切换。

示例二:动态删除多个类名

当我们需要动态删除多个类名时,可以使用一个循环遍历的方式,依次删除目标元素上的每一个类名。下面的示例中,我们首先定义了一个名为removeClass()的函数,然后在点击按钮时,调用该函数删除元素上的两个类名:

<!DOCTYPE html>
<html>
    <head>
        <style>
            .btn {
                background-color: green;
                color: #fff;
                padding: 10px;
                border: none;
                cursor: pointer;
                border-radius: 5px;
            }
            .btn.active {
                background-color: red;
            }
            .btn.disabled {
                opacity: .5;
                cursor: not-allowed;
            }
        </style>
    </head>
    <body>
        <button class="btn active disabled" id="toggleBtn">
            点击删除多个类名
        </button>
        <script>
            const toggleBtn = document.getElementById('toggleBtn');

            function removeClass(elem, className) {
                // 将目标元素上的类名通过空格分隔为一个数组
                const classNames = elem.className.split(' ');

                // 遍历类名数组,依次删除目标元素上的每一个类名
                for (let i = 0; i < classNames.length; i++) {
                    if (classNames[i] === className) {
                        classNames.splice(i, 1);
                        i -= 1;
                    }
                }

                // 将删除后的类名数组重新拼接成字符串,赋值给目标元素的className属性
                elem.className = classNames.join(' ');
            }

            toggleBtn.addEventListener('click', function() {
                removeClass(toggleBtn, 'active');
                removeClass(toggleBtn, 'disabled');
            })
        </script>
    </body>
</html>

在这个示例中,我们首先在CSS中定义了三个类名:.btn、.btn.active和.btn.disabled。.btn类名是按钮的默认样式,.btn.active表示激活状态,.btn.disabled表示禁用状态。然后我们在按钮上添加了三个类名。当我们点击按钮时,通过调用前面定义好的removeClass()函数,依次删除按钮上的active和disabled两个类名,使按钮恢复到默认样式。在removeClass()函数中,我们首先将元素上的类名通过split()方法分割成一个数组,然后使用循环遍历的方式,依次查找并删除数组中的目标类名,最后使用join()方法将类名数组再次拼接成一个字符串,赋值给目标元素的className属性,完成对类名的删除操作。

以上就是“详解原生JS动态添加和删除类”的完整攻略和两个示例的说明。希望能对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解原生JS动态添加和删除类 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • Python对象与引用的介绍

    Python对象与引用的介绍 在Python中,一切都是对象。对象(Object)是Python中最重要的概念之一,懂得如何管理对象在Python编程中至关重要。Python中的所有变量都是对象的一个引用,这就意味着当我们将一个对象赋值给一个变量时,实际上是将这个对象的引用赋值给变量。这也就是为什么很多人将Python描述成一门“动态”“弱化”的语言,因为我…

    JavaScript 2023年6月11日
    00
  • 利用javascript查看html源文件

    想要在网页中查看HTML源文件,可以使用JavaScript来实现。具体的实现方法如下: 使用document.documentElement.outerHTML属性,将整个HTML源代码保存在该属性中,并将其打印到控制台上。 console.log(document.documentElement.outerHTML); 使用该方法能够查看整个HTML文档…

    JavaScript 2023年5月27日
    00
  • jQuery Tools tab(幻灯片)

    下面是jQuery Tools tab(幻灯片)的完整攻略。 什么是jQuery Tools tab(幻灯片) jQuery Tools tab是一个基于jQuery的选项卡插件,可以通过点击选项卡来切换不同的内容页面。除此之外,还可以通过添加一些特效来改变选项卡的样式和显示方式。 如何使用jQuery Tools tab 引入jQuery库和jQuery …

    JavaScript 2023年6月11日
    00
  • javascript 自定义常用方法第2/2页

    下面是对“javascript 自定义常用方法第2/2页”的完整攻略。 什么是“javascript 自定义常用方法”? 在前端开发时,我们会经常使用一些常用的函数和方法,比如获取URL参数、验证表单、限制文本输入等。为了方便我们的开发,我们可以将这些常用的函数和方法封装成自定义方法,以便在以后的开发中反复使用。 如何自定义常用方法? 以下是自定义常用方法的…

    JavaScript 2023年5月18日
    00
  • jquery无法设置checkbox选中即没有变成选中状态

    当使用 jQuery 设置一个 checkbox 的选中状态时,在某些情况下可能会出现并没有设置成功的情况,通常是因为没有正确理解 checkbox 的3种状态:选中(checked)、未选中(unchecked)和半选状态(indeterminate)。 首先,我们需要明确 checkbox 的3种状态,如果一个 checkbox 没有设置“选中”或“未选…

    JavaScript 2023年6月10日
    00
  • 小米推送Java代码

    下面是详细讲解“小米推送Java代码”的完整攻略,包含了以下内容: 背景介绍 准备工作 推送API调用流程 示例说明 背景介绍 小米推送是小米开发团队提供的一项推送服务,它可以让开发者在应用内通过各种方式向用户推送通知、消息等。小米推送支持Android和iOS两个平台,各种消息类型的推送都可以通过API接口实现。 本文主要介绍如何在Java应用程序中使用小…

    JavaScript 2023年6月11日
    00
  • javascript之AJAX框架使用说明

    JavaScript之AJAX框架使用说明 什么是AJAX? AJAX(Asynchronous JavaScript and XML)指的是一种创建交互式 Web 应用程序的技术。使用 AJAX,JavaScript 和 XMLHttpRequest 对象一起实现无刷新数据更新。 使用 AJAX 可以在不重新加载整个页面的情况下,与服务器交换数据并更新部分…

    JavaScript 2023年6月11日
    00
  • JavaScript实现格式化字符串函数String.format

    JavaScript实现格式化字符串函数String.format 在JavaScript中,原生的字符串格式化的方式是通过ES6中的模板字符串来实现的。但是,如果你需要在传统的JavaScript代码中使用一种更加传统的方式来格式化字符串,那么可以通过实现格式化字符串函数String.format来实现。 1. 实现方式 实现String.format函数…

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