1. 程式人生 > 其它 >js基礎---類的操作(新增,刪除,查詢元素中的class名稱)

js基礎---類的操作(新增,刪除,查詢元素中的class名稱)

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            
            .b1{
                width: 100px;
                height: 100px;
                background-color: red;
            }
.b2{ height: 300px; background-color: yellow; } </style> <script type="text/javascript"> window.onload = function(){ //獲取box var box
= document.getElementById("box"); //獲取btn01 var btn01 = document.getElementById("btn01"); //為btn01繫結單擊響應函式 btn01.onclick = function(){ //修改box的樣式 /* * 通過style屬性來修改元素的樣式,每修改一個樣式,瀏覽器就需要重新渲染一次頁面 * 這樣的執行的效能是比較差的,而且這種形式當我們要修改多個樣式時,也不太方便
*/ /*box.style.width = "200px"; box.style.height = "200px"; box.style.backgroundColor = "yellow";*/ /* * 我希望一行程式碼,可以同時修改多個樣式 */ //修改box的class屬性 /* * 我們可以通過修改元素的class屬性來間接的修改樣式 * 這樣一來,我們只需要修改一次,即可同時修改多個樣式, * 瀏覽器只需要重新渲染頁面一次,效能比較好, * 並且這種方式,可以使表現和行為進一步的分離 */ //box.className += " b2"; //addClass(box,"b2"); //alert(hasClass(box,"hello")); //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 = /\bb2\b/; 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>