JS原生addClass、removeClass实现

本文介绍了两种使用原生JavaScript来实现元素的Class添加与移除的方法。第一种方法利用了自定义函数配合replace()实现,第二种则完全依赖基础JavaScript语法完成。文章提供了详细的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用jQuery的addClass()、removeClass()时手痒,想了解下原生JavaScript是怎么实现的这类功能。
方法一:还是用到了其他函数辅助,所以看着简短些。

function addClass(ele,addname){
        if(!ele.className){
            // class非空的时候,再判断要添加的类目是不是已经存在
            ele.className = addname;
            //class名为空的时候,直接赋值           
        }else{
            //非空
            if(!isHasClassName(addname,ele.className.split(" "))){
                //不存在要添加的class名
                ele.className += " " + addname;
            }

        }
        function isHasClassName(target,arr){
            for(var i in arr){
                if(target === arr[i]){
                    return true;
                }
            }
        } 
    }
function removeClass(ele,classname){
         ele.className = ele.className.replace(classname,"");
    }

思路:采用replace()的替换功能实现删除.
关于replace()详细参见http://www.w3school.com.cn/jsref/jsref_replace.asp

方法二:利用基础JavaScript,不采用其他函数实现

    //为元素添加新classname
    function addClassName(ele,classname){
     //判断以前是否为有class
        if(!ele.className){
            ele.className = classname;
        }else{
            newclassname = ele.className;
            newclassname += " ";
            newclassname += classname;
            ele.className = newclassname;
        }
    }
    //原生JavaScript不使用其他内部封装好的函数比较难以实现删除class,以下方法不适用于直接删除在行内设置了class的情况.一般在做鼠标事件时通过JS添加的class,可以通过数组,先把行内class储存在数组,然后需要时,在用这个储存好的数组在需要的时候更新.
var arrClassName=[];
   //初始化其他兄弟元素的classname
        function updateClassName(ele){
            for(var i = 1;i < ele.parentNode.childNodes.length;i += 4){
                ele.parentNode.childNodes[i].className = arrClassName[i];
            }
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值