整理总结:JS DOM中对className的选择,添加和删除

JSX本质解析:不是HTML,而是React.createElement语法糖 JSX是React中用于描述UI的JavaScript语法扩展,其核心并非HTML模板,而是一种可编译为React.createElement()调用的声明式语法糖。它将UI结构映射为虚拟DOM节点对象,使组件渲染完全运行在JavaScript语义体系内,从而支持条件判断、循环遍历、函数组合等原生JS能力。这种设计奠定了React声明式编程、状态驱动视图、高效diff更新的技术价值,广泛应用于单页应用、动态仪表盘、富交互后台系统等场景。理解JSX与HTML的本质差异及编译原理,是掌握React组件化开发、P 阅读详情
  1. 对相同className的元素的选择
/*方法*/
function getByClass(oParent, sClassName) {
    var aEls = oParent.getElementsByTagName("*"); //选择确定父元素内所有元素
    var arr = [];
    for (var i = 0; i < aEls.length; i++) {
        var aClassName = aEls[i].className.split(' '); //将所选元素的classname拆分为数组
        for (var j = 0; j < aClassName.length; j++) {//遍历这个数组进行判断
            if (aClassName[j] == sClassName) { 
                arr.push(aEls[i]); //将含有要找的className的元素存在数组中
            }
        }
    }
    return arr; //得到在确定父元素下具有某个className的所有元素,然后就可以方便的调用了
}

例如:

<!--我的html部分-->
<style>
p{width:100px;height:20px;background-color: yellow;}
</style>
<title>studyUp</title>
<body>  
<div>
    <p class="cnp cnp1"></p>
    <p class="cnp cnp2"></p>
    <p class="cnp3"></p>
</div>
/*我的js部分*/
var oDiv=document.getElementsByTagName('div')[0];
var aCnp=getByClass(oDiv,"cnp");
for (var i = 0; i < aCnp.length; i++) {
    aCnp[i].innerHTML="123";
};

实现效果:(要在class=”cnp”的元素里写上123)
这里写图片描述

2.对className的添加

/*方法*/
function addClass(obj, className) {

    if (obj.className == "") {
        obj.className = className;
    } else {
        var arr = obj.className.split(" ");//利用class间的空格将其拆分为数组
        if (arrIndexOf(arr, className) == -1) {//这个元素里面已经存在另外的class的判断
            obj.className += " " + className;
        }
    }
}
//判断一个数组中的某一个值是否存在,存在返回相应的位置否则返回-1;
function arrIndexOf(arr,aValue){
    for(var i=0;i<arr.length;i++){
        if(arr[i]==aValue){
            return i;
        }
    }
    return -1;
}

例如:

<!--我的html部分-->
<div>
    <p class="cnp cnp1"></p>
    <p class="cnp cnp2"></p>
    <p class="cnp3" id="p3"></p>
</div>
/*我的js部分*/
var oP3=document.getElementsByTagName('p3');
addClass(p3,"cnp");

实现效果:(第三个p标签中多了cnp的类名)
这里写图片描述

3.对className的删除

/*方法*/
function removeClass(obj, sClassName) {
    var arr = obj.className.split(" ");
    if (arrIndexOf(arr, sClassName) != -1) {
        arr.splice(arrIndexOf(arr, sClassName), 1);
        obj.className=arr.join(" ");
        //删除这个类名并将整个类名组重新转为字符串
    }
}

例如:

<!--我的html部分-->
<div>
    <p class="cnp cnp1"></p>
    <p class="cnp cnp2"></p>
    <p class="cnp3" id="p3"></p>
</div>
/*我的js部分*/
var oP3=document.getElementsByTagName('p3');
removeClass(p3,"cnp3");

实现效果:(第三个p标签中的class不见了)
这里写图片描述

Ruby‘s Louvre:IE6时代DOM操作契约化实践 DOM操作契约化是一种将HTML元素属性(如data-*)与JavaScript行为显式绑定的工程范式,其核心原理是通过约定式语义标签(如data-louvre-action、data-louvre-id)替代硬编码选择器和散落回调,实现事件委托、状态同步与局部刷新的可预测控制。该模式在jQuery主流但框架缺位的年代,为兼容IE6等老旧环境提供了轻量、可控、零构建的落地路径,技术价值在于以极低学习成本换取高可维护性与跨项目复用性。典型应用场景包括政务/金融类长生命周期后台系统、需渐进式迁移的老项目改造,以 阅读详情

相关推荐

原生JavaScript购物车实现:从事件委托到LocalStorage的完整实战

在Web前端开发中,JavaScript是实现动态交互的核心技术,其核心原理在于通过DOM操作和事件处理响应用户行为,实现数据与视图的同步。这种技术价值在于能够构建丰富、响应式的用户体验,是构建电商、社交、管理后台等各类Web应用的基础。事件委托作为一种高效的事件处理模式,能够优化性能,尤其适用于动态生成的元素;而LocalStorage则提供了浏览器端数据持久化的能力,是实现无后端数据存储的关键。本文聚焦于购物车这一经典应用场景,详细解析如何运用原生JavaScript数组遍历、事件委托机制,结合Loca

weixin_33937778的博客 353

JS之元素属性的修改和classname属性的添加

删除某个属性 //原生js document.getElementById('test1').removeAttribute('属性名'); //Jquery $('.classname').removeAttr('data-invalid=""'); 给classname添加值 原:class="js-passenger-lastName"; document.getElementById.....

萝小洛 3562

稳压二极管选型指南:关键参数与电路稳定性优化

本文深入解析了稳压二极管在电路设计中的核心作用与选型要点。文章详细阐述了稳定电压、动态电阻、额定功耗等关键参数对电路稳定性的影响,并结合实战案例,提供了从需求分析到参数验证的系统化选型流程与优化策略,帮助工程师避免常见设计陷阱,实现电路稳定性优化。

weixin_29196891的博客 686

className 与 classList 的区别 / setAttribute和add的区别

className 与 classList 的区别 1,所有浏览器都支持className属性 classList是HTML5新增,对IE浏览器并不友好,IE10+与其他主流浏览器支持此属性。 2,className属性返回值是一个字符串,内容就是HTML元素的class属性内容。 classList属性返回一个包含指定元素所有样式类的集合对象。 3,.className的返回值就是包含元素cla...

weixin_43748930的博客 3026

海上AI导航系统:技术架构与行业应用解析

计算机视觉与强化学习技术在海上导航系统中的应用正逐步改变传统航运业。通过多模态传感器融合技术,现代AI导航系统能够实现高精度的物体识别与实时路径规划,有效解决能见度依赖、决策延迟等核心痛点。以Orca AI的SeaPod系统为例,其结合了NVIDIA GeForce RTX 4070的边缘计算能力与多光谱协同识别技术,在恶劣环境下仍能保持稳定性能。这类系统不仅提升了航行安全性,还通过优化航线显著降低燃油消耗,在东京湾、马六甲海峡等繁忙水域展现出巨大价值。随着毫米波雷达融合方案的测试推进,未来海上导航将突破极

weixin_33597080的博客 354

【实战指南】RF-DETR目标检测全流程:从数据准备到工业部署

本文详细介绍了RF-DETR目标检测模型的全流程应用,从数据准备、模型训练到工业部署。RF-DETR作为基于Transformer的先进模型,在COCO基准测试中表现优异,推理速度超越YOLOv8,特别适合工业场景。文章还提供了数据标注、COCO格式转换、超参数调优及边缘设备部署的实用技巧,帮助开发者高效实现目标检测任务。

weixin_29081101的博客 421

js添加类名的两种方法

1.通过className来添加、删除类名 添加类名 获取元素.className = "类名1 类名2 ..."多个类名用空格隔开 移除类名 获取元素名.className = " "直接等于一个空字符串即可删除类名 2.通过classList来添加、删除类名 添加一个类名 获取元素名.classList.add("类名"); 添加多个类名用逗号隔开 获取元素名.classList..add("类名1","类名2","类名3",...); 每个类名需要用引号引起来 移除一个类名 获取元素名.classLi

想好了再写! 3万+

基于Multisim的智能交通灯控制系统仿真与实现(含动态闪烁功能)

本文详细介绍了基于Multisim的智能交通灯控制系统仿真与实现,重点解析了动态闪烁功能的电路设计。通过555定时器、74LS192计数器和JK触发器等核心模块,实现了主干道与支干道的交替通行及黄灯1Hz闪烁功能,为交通灯控制系统设计提供了完整的仿真方案。

weixin_29174013的博客 425

JS——DOM操作(className属性)

简单介绍className: className 属性:设置或返回元素的 class 属性 看下面一个简单的例子(给className设置样式变化案例),效果如下图: 代码如下: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-...

weixin_30340353的博客 592

如何在INCA中修改标定量的初始值,并刷回控制器

测试过程中,有些时候,标定量来不及修改,这就需要修改标定量的初始值了,又不想打开模型重新编译,因此直接在INCA中修改,然后再刷回控制器,就成了最佳选择,之前也学过,长时间不用,忘记怎么搞了,最近又用到了,这次记录一下,以后用到的时候,就不用在网上东翻西找了。截止到2023年11月24日,共找到了两种方法可以实现修改。

weixin_43406519的博客 4200

【Unity大规模RTS/攻城战框架】Large Scale Combat System - RTS Sieges深度解析

本文介绍了Unity专业级大规模RTS战斗框架Large Scale Combat System(LSCS)。该系统通过Job System+Burst技术解决了万人级单位的性能问题,提供完整的RTS操作体系、动态阵型系统、战术AI和攻城战功能。其亮点包括可破坏城门、行走城墙、战术AI配置系统,支持URP渲染管线,适用于Total War风格的大规模兵团对战项目。LSCS不仅提供核心战斗系统,还包含UI、小地图等配套模块,是Unity中少有的专业级RTS解决方案,特别适合需要深度战术玩法和大规模战斗的开发者

2403_88403568的博客 1334

React中给Dom节点添加多个className

方法1 <div className={value.class + " " + value.class2}>{value.value}</div> 方法2(中间必须用空格隔开) <div className={`${value.class} ${value.class2}`}>{value.value}</div>

嘘...一只bug 1010

前端使用二开Thingsboard一、二、三事(三)-规则链

以项目实战为基础,逐步介绍前端在thingsboard系统二次开发中的一些注意事项以及一些thingsboard一些页面功能讲解,为前端人员开发使用thingsboard提供一种可靠思路,打造一个完美的物联网系统。

weixin_43163457的博客 863

【实用总结】DOM节点className操作

经常用到的小工具函数,每次用到都重写一遍,有点浪费体力,于是决定分阶段整理下,需要用到的时候就直接拷过来用了~ 对于dom节点的className,常用操作不外乎增、删、查(改可以用增+删事先),由于代码比较简单,直接上源码+接口注释 /** * @description 给节点添加类 * @param {DOMObject} node dom节点 * @param ...

dengrong8117的博客 306

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

使用js对class(类名)增删改查的好办法,不要只用会className和jQuery啦

js修改样式的方法 1、对象.className(‘类名’) 2、setAttribute(),getAttribute()和removeAttribute() 3、JQuery的addClass()、removeClass() 使用js来对类名进行增删改查以便到达我们需要的功能,这是一个很实用的操作。 但当我们需要设置多个类名时,原生的可能比较多人熟知的className()就不能用了,因为它会覆盖,不能在原有的类名上增加,很鸡肋! 原生js的setAttribute()

m0_47974640的博客 5614

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

对于DOM的相关学习整理

20.DOM (浏览器环境下测试) 文档对象模型,浏览器提供api(html元素->js对象)通过api进行dom操作(追加节点,删除节点,动态改变属性) 1)体系结构 Object Node Element Document Text Comment HTMLElement HTMLDIVElement 1.Node 节点元素,在html中所有的标签都可以被称为是节点 Node是构造函数 1)实例化 浏览器在加载html的时候已经完成了节点的实例化,只需要document.xxx方法获

all_outD的博客 199

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

开发小技巧之调试DOM

开发小技巧之调试移开消失的元素引言伪类增删className增删DOM总结 引言     大多数小伙伴都遇到过一种调试情况,想调试页面中的某个元素,查看该元素的样式或者其他信息。鼠标移上去的时候或者点击的时候存在,移开就消失了,以至于不能用选择页面元素工具查看。今天就来整理一下什么功能会出现这种情况,以及该如何调试这种情况的元素。 伪类 最常见的也是最普通的...

rudy_zhou的博客 1662

【精简】Web API--DOM获取元素

dom-获取元素

GUIDM的博客 662

react classname多个_React 入门儿

共计 10137 字,阅读时长约 25 分钟谁都没有看见过风,更不用说你和我了。但是当纸币在飘的时候,我们知道那是风在数钱。React 影响着我们工作的方方面面,我们每天都在使用它,只窥其表却难以窥其里。正所谓看不如写,本篇文章的目的就是从原理层面探究 React 是如何工作的。工具—在写文章之前,为了方便理解,我准备了一个懒人调试仓库 simple_react[1] ,这个仓库将 be...

weixin_39907316的博客 270

react classname多个_React 入门

共计 10137 字,阅读时长约 25 分钟谁都没有看见过风,更不用说你和我了。但是当纸币在飘的时候,我们知道那是风在数钱。React 影响着我们工作的方方面面,我们每天都在使用它,只窥其表却难以窥其里。正所谓看不如写,本篇文章的目的就是从原理层面探究 React 是如何工作的。工具—在写文章之前,为了方便理解,我准备了一个懒人调试仓库 simple_react[1] ,这个仓库将 be...

weixin_39945445的博客 772

JS基础部分学习笔记

整理了下之前JS的学习笔记,基础部分的知识。 1.className 设置标签的css类的时候不能直接使用class,而是className。 2.设置元素属性的方法 一种是使用 . 一种是使用中括号,使用变量设置css属性值的时候,不能直接写成div1.style.name,应该写成div1.style[name],name是个变量。 例如:div1.style[‘name’],div1.style.height,div1.style.width,变量不用加引号,加引号就是字符串了,例如:div1.s

159

原生js 样式的操作整理

内联样式的获取 function getStyle(obj,attr){//简单的获取内联样式 return obj.currentStyle?obj.currentStyle[attr]:obj.getComputedStyle(obj,false)[attr]; } 下面是比较完善的, //参考地址 http://stylechen.com/getstyle2...

weixin_30266829的博客 116

react classname多个_React 是如何工作的

共计 10137 字,阅读时长约 25 分钟谁都没有看见过风,更不用说你和我了。但是当纸币在飘的时候,我们知道那是风在数钱。React 影响着我们工作的方方面面,我们每天都在使用它,只窥其表却难以窥其里。正所谓看不如写,本篇文章的目的就是从原理层面探究 React 是如何工作的。工具—在写文章之前,为了方便理解,我准备了一个懒人调试仓库 simple_react[1] ,这个仓库将 be...

weixin_39624389的博客 125
上一篇: JS中常用Math对象常用方法的整理
下一篇: 移动端头部代码解释
Dorui
博客等级 码龄9年 8粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值