1.7 节点进行排序显示

中心主题:利用js的sort()方法对队列进行重排序并且显示在页面上

一、HTML结构

<input type="text" id="inputGet"/>
<button id="leftIn">左侧进入</button>
<button id="rightIn">右侧进入</button>
<button id="leftOut">左侧删除</button>
<button id="rightOut">右侧删除</button>
<button>冒泡排序</button>
<div id="container">

</div>

二、CSS样式

span{
            width:40px;
            height:40px;
            background-color: deeppink;
            color: white;
            font-size:25px;
            line-height: 40px;
            display: inline-block;
            text-align: center;
            margin-left:10px;
            margin-right:10px;
        }

三、js

  var container=document.getElementById("container");
    var conList=[];
    var state=[];
    function leftIn(num){
        if(container.childNodes.length==6){

            alert("只能输入6个节点");

            return false;


        }
        conList.unshift(addDom(num));
        refreshContainer(conList);

    }
   function leftOut(){
       var targetElement=conList.shift();
       alert(targetElement.innerHTML);
       refreshContainer(conList);
   }
    function rightIn(num){
        if(container.childNodes.length==6){

            alert("只能输入6个节点");

            return false;


        }
        conList.push(addDom(num));
        refreshContainer(conList);
    }
    function rightOut(){
        var targetElement=conList.pop();
        alert(targetElement.innerHTML);
        refreshContainer(conList);
    }
    //绘制节点
    function refreshContainer(arrayList){
        container.innerHTML="";

            for( var i in arrayList){
                container.appendChild(arrayList[i]);
            }



    }

    //获取input的输入值
    function getInputValue(){
        var v1=document.getElementById("inputGet").value;
        if(!(/\D/g.test(v1))){
            if(v1>=10&&v1<=100){
               return v1;
            }
            else{
                alert("请输入10~100之间的数字");
            }
        }
        else{
            alert("请输入整数");
        }
    }
  /*  //js 中的冒泡排序法
        function sort (arr) {
            for (var i = 0;i<arr.length;i++) {
                for (var j = 0; j < arr.length-i-1; j++) {
                    if (arr[j]<arr[j+1]) {
                        var temp=arr[j];
                        arr[j]=arr[j+1];
                        arr[j+1]=temp;
                      /!*  state.push(JSON.parse(JSON.stringify(arr)));*!/
                    }
                }
            }
            return arr;
        }*/
    //增加span节点
    function addDom(a){
        var targetElement=document.createElement("span");
        targetElement.innerText=a;
        targetElement.style.height=Number(a)+Number(20)+"px";
        return targetElement;
    }
    var btn=document.getElementsByTagName("button");
    btn[0].onclick=function(){
         leftIn(getInputValue());
    };
    btn[1].onclick=function(){
        rightIn(getInputValue());
    };
    btn[2].onclick=function(){
        leftOut();
    };
    btn[3].onclick=function(){
        rightOut();
    };
    btn[4].onclick=function(){
        //自己写的--获取节点的innerHTML组成一个数组,利用sort()重排序之后,删除原来的container的节点内容
        //按照排序后的重新增加节点。
      /*  var str=[];
         for(var i in conList){
         str.push(conList[i].innerHTML);
         }
         sort(str);
         conList=[];
         for(i in str){
         conList.push(addDom(str[i]));
         refreshContainer(conList);
         }
         alert(JSON.stringify(str));*/

        //推入数组中的节点是个对象,就可以利用对象的属性对对象进行比较
        function compare(nodeA,nodeB){
            return parseInt(nodeA.innerText) -parseInt(nodeB.innerText);
        }
        conList.sort(compare);
        setInterval(refreshContainer(conList),500);

    };

四、最终结果

posted on 2016-07-28 15:10  花花爱吃大白菜  阅读(250)  评论(0编辑  收藏  举报

导航