• 类的操作


    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style>
            .b1{
                 100px;
                height: 100px;
                background-color: red;
            }
            .b2{
                 200px;
                height: 200px;
                background-color: yellow;
            }
        </style>
        <script>
            window.onload=function(){
                var box=document.getElementById("box");
                var btn01=document.getElementById("btn01");
                btn01.onclick=function(){
                    // 修改box的样式
                    /* 
                        通过style属性来修改元素的样式,每修改一个样式,浏览器就需要重新渲染一次页面
                        这样执行的性能是比较差的,而且这种形式当我们要修改多个样式时,也不太方便
                    */
                    /* box.style.width="200px";
                    box.style.height="200px";
                    box.style.backgroundColor="yellow" ;*/
    
                    /* 
                        我希望一行代码,可以同时修改多个样式
                    */
    
                    // 修改box的class属性
                    /* 
                        我们可以通过修改元素的class属性来间接的修改样式
                        这样一来,我们只需要修改一次,即可同时修改多个样式,
                        浏览器只需要重新渲染页面一次,性能比较好,
                        并且这种方式,可以使表现和行为进一步的分离
                    */
                    // box.className +=" b2";//注意加"空格b2"
                    // addClass(box,"b2");
    
                    // alert(hasClass(box,"b1"));
    
                    // removeClass(box,"b2");
                    toggleClass(box,"b2");
                };
            };
            // 定义一个函数,用来向一个元素中添加指定的class属性值
            /* 
                参数:
                    obj 要添加class属性的元素
                    cn 要添加的class值
            */
            function addClass(obj,cn){
                // 检查obj中是否含有cn
                if(!hasClass(obj,cn)){
                    obj.className +=" "+cn;
                }
                
            }
            /* 判断一个元素中是否含有指定的class属性值
                如果有该class,则返回true,没有则返回false
            */
            
            function hasClass(obj,cn){
                // 判断obj中有没有cn class
                // 创建一个正则表达式
                // var reg=/b2/;
                var reg=new RegExp("\b" + cn + "\b");
                return reg.test(obj.className);
            }
            /* 
                删除一个元素中的指定的class属性
            */
            function removeClass(obj,cn){
                // 创建一个正则表达式
                var reg=new RegExp("\b"+cn+"\b");
                // 删除class
                obj.className=obj.className.replace(reg,"");
            }
    
            /* 
                toggleClass可以用来切换一个类
                如果元素中具有该类,则删除
                如果元素中没有该类,则添加
            */
            function toggleClass(obj,cn){
                // 判断obj中是否含有cn
                if(hasClass(obj,cn)){
                    // 有,则删除
                    removeClass(obj,cn);
                }else{
                    addClass(obj,cn);
                }
                
            }
        </script>
    </head>
    <body>
        <button id="btn01">点击按钮以后修改box的样式</button>
        <br/><br/>
        <div id="box" class="b1 b2"></div>
    </body>
    </html>

     

     

  • 相关阅读:
    入门菜鸟
    FZU 1202
    XMU 1246
    Codeforces 294E Shaass the Great 树形dp
    Codeforces 773D Perishable Roads 最短路 (看题解)
    Codeforces 814E An unavoidable detour for home dp
    Codeforces 567E President and Roads 最短路 + tarjan求桥
    Codeforces 567F Mausoleum dp
    Codeforces 908G New Year and Original Order 数位dp
    Codeforces 813D Two Melodies dp
  • 原文地址:https://www.cnblogs.com/hr-7/p/14238383.html
Copyright © 2020-2023  润新知