js实现addClass添加样式

js实现addClass添加样式,第1张

今天和大家分享如何用原生js实现添加样式功能

jQuery里封装的有addClass函数,调用十分方便,那么用JS如何实现呢,下面我们来介绍下。

首先是CSS部分

写一个新的class用来添加

HTML部分

一个没有样式的div

script部分

声明addClass函数,把标签元素和新的class作为参数传进去,进行判断,如果标签元素原来有样式,那么就增加一个样式,如果没有样式,那么就把标签元素的样式设为传进来的样式。

调用函数,这样就实现了样式的添加。

更多前端内容 请 点击关注 点击关注

添加多个class 其实可以先从添加一个class然后对其进行封装

好的我废话就不多说了下面给出一份演示

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Title</title>

    <style>

 .asdasd{

            width:100px

 height: 100px

 background-color: #cccccc

 }

        .hello{

            background-color: #00AEEF

 }

    </style>

</head>

<body>

<div class="asdasd" id="demo">

</div>

<script>

 //清楚空格

 function trim(str,t){

        if(typeof t == "undefined"){

            t="lr"

 }

        switch (t){

            case "l":{

                return str.replace(/(^\s*)/g, "")

 }

            case "r":{

                return str.replace(/(\s*$)/g, "")

 }

            case "lr":{

                return str.replace(/(^\s*)|(\s*$)/g, "")

 }

        }

    }

    //增加Class

 function addClass(ele,cls){

        if(!ele.getAttribute)return

 var allClass=[]

 cls=trim(cls)

 if(ele.getAttribute("class") == null){}else{

            allClass=ele.getAttribute("class").split(" ")

 }

        if(!inArr(allClass,cls)){

            allClass.push(cls)

 ele.setAttribute("class",allClass.join(" "))

 }

    }

    //循环

 function each(arr,f){

        if(!arr.length)return console.log("error:array is not length")

 for(var i = 0i<arr.lengthi++){

            f.call(arr[i],i,arr[i])

 }

    }

    //是否在数组里面 其实可以通过indexof判断但是indexof是匹配了数据类型的

 function inArr(arr,v){

        if(!arr.length)return false

 for(var i = 0i<arr.lengthi++){

            if(v==arr[i]){return true}

        }

        return false

 }

    //增加多个Class

 function  addClassArr(ele,arr){

       each(arr,function(){

           addClass(ele,this)

 })

   }

    addClassArr(document.getElementById("demo"),["a1","hello","world"])

</script>

</body>

</html>

可以看到 如果没有执行addClassArr这个函数显示的效果的这样的

执行了addClassArr这个函数显示的效果是这样的


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11590696.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存