DOM排序

DOM排序

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Examples</title>
<meta name="description" content="">
<meta name="keywords" content="">
<link href="" rel="stylesheet">
<style type="text/css">
    .button{
        height:50px;
        width: auto;
        line-height: 50px;
        padding-left:50px;
    }
    .button span{
        width:40px;
        height:30px;
        line-height: 30px;
        text-align: center;
        cursor: pointer;
        background: #666;
        color:#fff;
        margin:10px 30px;
        padding:10px;

    }
    ul{
        overflow: auto;
        list-style: none;
        margin:0;
        text-align: center;
        line-height: 80px;
        width:320px;
    }
    ul li{
        float:left;
        width:80px;
        height:80px;
        position: relative;
        margin-bottom: 50px;
    }
    li span{
        position: absolute;
        top:70px;
        left:20%;
        background: #ddd;
        border-radius: 5px;
        padding:0 5px;
        line-height: 1.5;
    }
    li em{
        width:100%;
        height:100%;
        display: block;
        font-style: normal;
    }
    em.pic1{
        background: #de8ac6;
    }
    em.pic2{
        background: #e49d97;
    }
    em.pic3{
        background: #e7e27a;
    }
    em.pic4{
        background: #73c9a4;
    }
    em.pic5{
        background: #5b87f0;
    }
    em.pic6{
        background: #9e69ff;
    }
    em.pic7{
        background: #f98bae;
    }
    em.pic8{
        background: #de8ac6;
    }


</style>
</head>
<body>
    <p  class="button" >
        <span id="btn1" onclick="normal()">從大到小</span>
        <span id="btn2" onclick="random()">亂序</span>
    </p>
    <ul id="picWrap">
        <li ><em class="pic1"></em><span>第1個</span></li>
        <li ><em class="pic2"></em><span>第2個</span></li>
        <li ><em class="pic3"></em><span>第3個</span></li>
        <li ><em class="pic4"></em><span>第4個</span></li>
        <li ><em class="pic5"></em><span>第5個</span></li>
        <li ><em class="pic6"></em><span>第6個</span></li>
        <li ><em class="pic7"></em><span>第7個</span></li>
        <li ><em class="pic8"></em><span>第8個</span></li>
    </ul>

</body>
</html>

一、不操作DOM的JS實現

<script type="text/javascript">
        //初始化變量
        var $picWrap=document.getElementById('picWrap');
        var $li=$picWrap.getElementsByTagName('li')
        var $pics=$picWrap.getElementsByTagName('img');
        var $tags=$picWrap.getElementsByTagName('span');

        //定義並初始化數組用於存儲img和span的內容(這部分變量也可以不從頁面獲取,直接定義成靜態變量)
        var $data=[],$dataRadom=[];
        for(var i=0;i<$li.length;i++){
            $data.push({'src':$pics[i].getAttribute('src'),'tag':$tags[i].innerHTML})
            $dataRadom.push({'src':$pics[i].getAttribute('src'),'tag':$tags[i].innerHTML})
        }

        //從大到小排序
        function normal(){
            for(var i=0;i<$data.length;i++){
                $pics[i].setAttribute('src',$data[i].src);
                $tags[i].innerHTML=$data[i].tag;
            }
        }

        //隨機排序
        function random(){
            $dataRadom.sort(randomSort);                   
            for(var i=0;i<$dataRadom.length;i++){
                $pics[i].setAttribute('src',$dataRadom[i].src);
                $tags[i].innerHTML=$dataRadom[i].tag;
            }
        }
        //利用數組sort方法對數組進行隨機排序
        function randomSort(a, b) {
            return Math.random() > 0.5 ? -1 : 1;
        }
    </script>

二、操作DOM的實現

<script type="text/javascript">
        //初始化變量
        var $picWrap=document.getElementById('picWrap');
        var $pics=$picWrap.getElementsByTagName('li');

        //定義並初始化數組用於存儲li的內容
        var $htmls=[],$htmlsInit=[];

        for(var i=0;i<$pics.length;i++){
            $htmls.push($pics[i].innerHTML)
            $htmlsInit.push($pics[i].innerHTML)
        }

        //DOM操作(從大到小排序)
        function normal(){
            $picWrap.innerHTML="";
            for(var i=0;i<$htmls.length;i++){
                $picWrap.innerHTML+='<li>'+$htmls[i]+'</li>';
            }
        }

        //DOM操作(隨機排序)
        function random(){
            var $htmlsRadom=$htmlsInit.sort(randomSort);  
            $picWrap.innerHTML="";

            for(var i=0;i<$htmlsRadom.length;i++){
                $picWrap.innerHTML+='<li>'+$htmlsRadom[i]+'</li>';
            }

        }
        //利用數組sort方法對數組進行隨機排序
        function randomSort(a, b) {
            return Math.random() > 0.5 ? -1 : 1;
        }
    </script>
發佈了51 篇原創文章 · 獲贊 9 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章