2016-09-22 11 views
0

私は「番号付き」リストを持っています。ボタンをクリックするだけでアルファベット順にソートしたいのですが、ソート条件を選択したあとをドロップダウンリスト(選択)から選択してください。jQueryで昇順と降順のHTMLリストを並べ替え

問題は、アイテムを昇順に並べ替えて降順に並べ替えると、降順ソートアイテムがの後に配置され、昇順にソートされたアイテムがになります。リストは大きくなります。

$(document).ready(function(){ 
 
    var sortItems = function() { 
 
    var sortedNames = []; 
 
    var sortedItms = []; 
 
    var rawNames = $('.list').find('li'); 
 
    for (var i = 0; i < rawNames.length; i++) { 
 
     var names = $(rawNames[i]).text(); 
 
     sortedNames.push(names); 
 
    } 
 

 
    $('#choose_order').on('change', function(){ 
 
     var currVal = $(this).find("option:selected").val(); 
 
     console.log(currVal); 
 
     if (currVal != 'default') { 
 
     $('#sortbtn').removeClass("disabled"); 
 
     if (currVal == 'asc') { 
 
      sortedNames.sort(); 
 
     } else { 
 
      sortedNames.sort(); 
 
      sortedNames.reverse(); 
 
     } 
 
     } else { 
 
     $('#sortbtn').addClass("disabled"); 
 
     } 
 
    }); 
 

 
    var setItems = function() { 
 
    sortedItms = []; 
 
     for (var j = 0; j < sortedNames.length; j++) { 
 
     var sortedItm = '<li>' + sortedNames[j] + '</li>'; 
 
     sortedItms.push(sortedItm); 
 
     } 
 
     sortedItms.join(''); 
 
     $('.list').html(sortedItms); 
 
    } 
 

 
    $('#sortbtn').on('click', setItems); 
 
    } 
 
    $(window).on('load', sortItems); 
 

 
});
<link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
<div class="pannel"> 
 
    <select name="choose_order" id="choose_order"> 
 
    <option value="default" selected="selected">Choose sorting order</option> 
 
    <option value="asc">Ascending</option> 
 
    <option value="desc">Descending</option> 
 
    </select> 
 
    <div class="buttons_container"> 
 
    <a class="btn btn-success disabled" id="sortbtn">Sort</a> 
 
    </div> 
 
    <ol class="list"> 
 
    <li>Cosmin</li> 
 
    <li>Alina</li> 
 
    <li>Diana</li> 
 
    <li>Elena</li> 
 
    <li>Bogdan</li> 
 
    </ol> 
 
</div>

私が間違って何をしているのですか?

ありがとうございました!

+0

http://stackoverflow.com/questions/8837191/sort-an-html-list-with-javascript – Redu

+1

の可能性のある重複あなたの 'sortedItms'にアイテムを追加するために' .push'をやっています配列を削除することはできません。この配列の項目を追加するのではなく、各ソートで置き換える必要があります。 – Santi

答えて

1

sortedItmsをクリアする必要があります。

var setItems = function() { 
    sortedItms = []; 
     for (var j = 0; j < sortedNames.length; j++) { 
     var sortedItm = '<li>' + sortedNames[j] + '</li>'; 
     sortedItms.push(sortedItm); 
     } 
     sortedItms.join(''); 
     $('.list').html(sortedItms); 
    } 
+0

完璧に動作します!ありがとうございました! :) – user1647234

関連する問題