2

このようなリストボックスを作成し、データの並べ替えに役立つタイトルバーを作成しました。

ID                 Name
------------------------------------------------------------
ID1                Identity One
ID2                Identity Two
ID3                Identity Three
ID4                Identity Four
-------------------------------------------------------------

上記のリストをIDと名前に基づいて並べ替える必要があります。つまり、ユーザーがIDをクリックすると、IDに基づいてリストを並べ替える必要があります。その逆も同様です。しかし、問題はデータレイヤーからのものであり、1行で次のようになります。

ID1   &nbsp:Idenitity One

したがって、optionsタグに同じものを出力し、上記のように出力を取得しています。上記の出力を生成するコードは次のとおりです。

 <select id="selSort" size="10" style="width:350px" id="rpt">
<option value = "ID1">
        ID1 &nbsp; &nbsp; Identity One
</option>
<option value = "ID2">
        ID2 &nbsp; &nbsp; Identity Two
</option>
<option value = "ID4">
        ID4 &nbsp; &nbsp; Identity Four
</option>
<option value = "ID3">
        ID3 &nbsp; &nbsp; Identity Three
</option>

私の質問は、上記のシナリオの並べ替え機能をどのように実装するかです。はい、並べ替えを試みましたが、単一の値に基づいてではなく、リストボックス全体を並べ替えています。少なくとも今私ができることは、すべてのIDを1つの配列に入れ、名前を別の配列に入れるような方法で受信データをフォーマットすることです。明確に説明していない場合はお知らせください

編集:

リストボックスを並べ替えようとしたコード

function sortSelect(selElem) {
    var tmpAry = new Array();
    for (var i=0;i<selElem.options.length;i++) {
        tmpAry[i] = new Array();
        tmpAry[i][0] = selElem.options[i].text;
        tmpAry[i][1] = selElem.options[i].value;
    }
    tmpAry.sort();
    while (selElem.options.length > 0) {
        selElem.options[0] = null;
    }
    for (var i=0;i<tmpAry.length;i++) {
        var op = new Option(tmpAry[i][0], tmpAry[i][1]);
        selElem.options[i] = op;
    }
    return;
}
4

1 に答える 1

3

カスタム配列ソートを使用して、これを見てくださいHow to sort select base on an id ?

ここでの考え方は、配列を作成し、その値に基づいてソートし、ソートされた値に基づいてオプションを動的に作成することです。

カスタムソートコード

source.sort(function (x, y) {
  if (isAsc) 
     return y.id - x.id;
  else 
    return x.id - y.id;
});
于 2013-01-08T12:01:56.667 に答える