1. <bdo id="8zfej"></bdo>
    <li id="8zfej"><meter id="8zfej"><th id="8zfej"></th></meter></li>

    南京北大青鳥

    全國咨詢電話:15195455103

    三分鐘了解北大青鳥
    當前位置:南京北大青鳥 > 學習園地 > 編程技巧

    利用HTML5的classList API優化對樣式名className的操作

    來源:南京北大青鳥張府園校區? ? ? 作者:IT教育 ? ??

    HTML5的classList API提供了以下幾個比較有用的控制CSS樣式名的方法: [javascript] view plaincopy //添加一個class elem.classList.add(classname);
    HTML5的classList API提供了以下幾個比較有用的控制CSS樣式名的方法:
    [javascript] view plaincopy
    //添加一個class  
    elem.classList.add(classname);  
      
    //刪除一個class  
    elem.classList.remove(classname);  
      
    //判斷一個class是否已存在  
    elem.classList.contains(classname);  
      
    //如果class已存在則移除,如果不存在則添加  
    elem.classList.toggle(classname);  
    更多更詳細的方法請參看HTML5 classList API。
    這些方法以前是通過JavaScript來實現的,現在HTML5提供了這些原生的API,我們可以用它來優化以前用JavaScript來實現的操作方法,但是也要保證兼容不支持這幾個API的瀏覽器。具體代碼如下:
    [javascript] view plaincopy
    function N(id){return document.getElementById(id)}  
    N.trim = String.prototype.trim || function(str){  
        return str.replace(/^\s+/, '').replace(/\s+$/, '');  
    };  
    if( document.createElement('p').classList ){  
        N.addClass = function(elem, className){  
            elem && elem.classList && elem.classList.add(className);  
        };  
        N.removeClass = function(elem, className){  
            elem && elem.classList && elem.classList.remove(className);  
        };  
        N.hasClass = function(elem, className){  
            return elem && elem.classList && elem.classList.contains(className);  
        };  
        N.toggleClass = function(elem, className){  
            elem && elem.classList && elem.classList.toggle(className);  
        };  
        alert('Use html5 classList!');  
    }else{  
        N.addClass = function(elem, className){  
            if( elem ){  
                var cn = elem.className;  
                if(!cn){  
                    elem.className = className;  
                }else if( (' '+cn+' ').indexOf(' '+className+' ')===-1 ){  
                    elem.className = className+' '+cn;  
                }  
            }  
        };  
        N.removeClass = function(elem, className){  
            if( elem ){  
                var cn = elem.className;  
                elem.className = cn===className ?   
                    '' : N.trim( (' '+cn+' ').replace(' '+className+' ', ' ') );  
            }  
        };  
        N.hasClass = function(elem, className){  
            if( elem && elem.className ){  
                return (' '+elem.className+' ').indexOf(' '+className+' ') > -1;  
            }  
            return false;  
        };  
        N.toggleClass = function(elem, className){  
            N.hasClass(elem, className) ?   
                N.removeClass(elem, className) : N.addClass(elem, className);  
        };  
    }  
    HTML測試文件的源碼如下,自己拿去測試去吧:
    [html] view plaincopy
    <!DOCTYPE html>  
    <html>  
    <head>  
    <title>利用HTML5的classList API優化樣式名className操作</title>  
    <meta http-equiv="content-type" content="text/html;charset=utf-8">  
    <style type="text/css">  
    p{color:red;font-size:12px;}  
    .gree{color:#00ff00;}  
    .blue{color:#0000ff;}  
    .bold{font-weight:bold;}  
    .small{font-size:18px;}  
    .middle{font-size:32px;}  
    .big{font-size:56px;}  
    </style>  
    </head>  
    <body>  
      
    <p>默認字體和顏色是這樣的。。。</p>     
    <p id="p1">這是p1,原無class</p>  
    <p id="p2" class="gree bold">這是p2,原樣式gree bold</p>  
    <p id="p3" class="gree bold">這是p3,原樣式gree bold</p>  
    <p id="p4" class="gree bold">這是p4,原樣式gree bold</p>  
    <p id="p5">這是p5,原無class</p>  
    <p id="p6" class="gree bold">這是p4,原樣式gree bold</p>  
      
    <script type="text/javascript">  
    function N(id){return document.getElementById(id)}  
    N.trim = String.prototype.trim || function(str){  
        return str.replace(/^\s+/, '').replace(/\s+$/, '');  
    };  
    if( document.createElement('p').classList ){  
        N.addClass = function(elem, className){  
            elem && elem.classList && elem.classList.add(className);  
        };  
        N.removeClass = function(elem, className){  
            elem && elem.classList && elem.classList.remove(className);  
        };  
        N.hasClass = function(elem, className){  
            return elem && elem.classList && elem.classList.contains(className);  
        };  
        N.toggleClass = function(elem, className){  
            elem && elem.classList && elem.classList.toggle(className);  
        };  
        alert('Use html5 classList!');  
    }else{  
        N.addClass = function(elem, className){  
            if( elem ){  
                var cn = elem.className;  
                if(!cn){  
                    elem.className = className;  
                }else if( (' '+cn+' ').indexOf(' '+className+' ')===-1 ){  
                    elem.className = className+' '+cn;  
                }  
            }  
        };  
        N.removeClass = function(elem, className){  
            if( elem ){  
                var cn = elem.className;  
                elem.className = cn===className ?   
                    '' : N.trim( (' '+cn+' ').replace(' '+className+' ', ' ') );  
            }  
        };  
        N.hasClass = function(elem, className){  
            if( elem && elem.className ){  
                return (' '+elem.className+' ').indexOf(' '+className+' ') > -1;  
            }  
            return false;  
        };  
        N.toggleClass = function(elem, className){  
            N.hasClass(elem, className) ?   
                N.removeClass(elem, className) : N.addClass(elem, className);  
        };  
    }  
      
    N.addClass(N('p1'), 'blue');  
    N.removeClass(N('p3'), 'bold');  
    N.toggleClass(N('p4'), 'gree');  
    N.toggleClass(N('p4'), 'middle');  
    N.toggleClass(N('p5'), 'big');  
    N.addClass(N('p6'), 'small');  
    </script>  
    </body>  
    </html>  
    個人在Chrome 22、Firefox 15、IE6,7,8,9下測試均沒有問題,其他瀏覽器未測試。。。
    其中發現IE9也沒有classList API,IE6,7,8更不用說了。

    分享到:
    近期文章

    搶試聽名額

    名額僅剩66名

    教育改變生活

    WE CHANGE LIVES

    主站蜘蛛池模板: 狠狠色丁香婷婷综合潮喷| 色综合a怡红院怡红院首页| 狠狠色噜噜狠狠狠狠狠色综合久久| 激情五月激情综合网| 色综合久久天天影视网| 精品国产国产综合精品| 色综合天天综一个色天天综合网| 亚洲色婷婷综合开心网| 色综合久久久久综合99| 日韩综合无码一区二区| 一本色道久久综合亚洲精品蜜桃冫| 色婷婷六月亚洲综合香蕉| 久久综合综合久久狠狠狠97色88| 亚洲综合偷自成人网第页色| 国产色综合久久无码有码| 一本丁香综合久久久久不卡网站| 亚洲综合图片小说区热久久| 激情综合色综合啪啪开心| 色偷偷亚洲第一综合| 一本久道久久综合狠狠躁| 亚洲综合熟女久久久30p| 狠狠狠色丁香婷婷综合久久五月| 综合偷自拍亚洲乱中文字幕| 色综合天天综合网站中国| 色欲久久久天天天综合网| 亚洲综合另类小说色区| 伊人久久大香线蕉综合影| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 色综合久久天天影视网| 久久综合国产乱子伦精品免费| 亚洲综合另类小说色区色噜噜| 天天久久综合网站| 狠狠色综合7777久夜色撩人| 大香网伊人久久综合观看| 天天综合网天天做天天受| 国精产品自偷自偷综合下载| 精品综合一区二区三区| 天天做天天爱天天综合网| 国产成人AV综合久久| 激情五月激情综合网| 亚洲色欲啪啪久久WWW综合网|