原生js怎么添加一个或多个类名

原生js怎么添加一个或多个类名,第1张

var dom = document.getElementById('box')

dom.className = 'box button'//在这个地方设置class,这个是改dom去哪不得class

也可以dom.className += 'class'  添加类名

    // dom 元素处理

    // 获取dom属性

    function getAttr( attr )

    {

        return this.getAttribute( attr )

    }

    // 设置属性

    function setAttr( attr, val )

    {

        this.setAttribute( attr, val )

        return this

    }

    // 编辑元素class

    function editClass( mode, data )

    {

        var cls = getAttr.call( this, "class" ) || ''

        var arr = cls.split( /\s+/ )

        switch( mode )

        {

            case "add":

                return setAttr.call( this, "class", cls + " " + data )

            break

            case "remove":

                for( var i = 0 i < arr.length i++ )

                {

                    if( arr[ i ] == data )

                    {

                        arr.splice( i, 1 )

                    }

                }

                var cls = arr.join( " " )

                cls = cls.replace( /^\s|\s$/g, "" )

                // cls = cls == "" ? null : cls

                return setAttr.call( this, "class", cls )

            break

            default:

                console.log( "EditClass mode error!" )

                return this

            break

        }

    }

    // 添加class

    function addClass( cls )

    {

        return editClass.call( this, "add", cls )

    }

    // 删除class

    function removeClass( cls )

    {

        return editClass.call( this, "remove", cls )

    }

    

    // 我写的这个调用起来和普通的调用方式不一样, 需要用call

    

    // 比如

    dom = document.getElementById('domid')

    addClass.call(dom, 'newclass') // 给dom添加名为‘newclass’的classname

至于toggle没用过,不清楚是什么效果, 不过我想结合add和remove应该已经能做出所有效果了

<!DOCTYPE html>

<html>

 <head>

  <title>测试页面2</title>

  <meta charset="UTF-8"/>

  <style>

   .tdiv{

    border:2px solid

   }

  </style>

  <script>

   function test(ele){

    var pDiv=ele.parentNode

    if(pDiv.className==" "){

     pDiv.className="tdiv"

    }else{

     pDiv.className=" "

    }

   }

   //还可以用classList,这种方法更流畅

   function test2(ele){

        var pDiv=ele.parentNode

        if(pDiv.classList.contains("tdiv")){

             pDiv.classList.remove("tdiv")

        }else{

             pDiv.classList.add("tdiv")

        }

       }

  </script>

 </head>

 <body>

  <div>

   <a onclick="test(this)">测试</a>

  </div>

 </body>

</html>


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

原文地址: http://outofmemory.cn/bake/11495115.html

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

发表评论

登录后才能评论

评论列表(0条)

保存