按顺序填充下拉列表

时间:2014-07-10 20:06:40

标签: javascript jquery html

我试图以某种顺序(字母顺序/字母数字顺序)填充我的下拉菜单,但我的代码似乎没有工作。它填充了价值但不是有序的。

这是我的代码

function dropdown(){
    var html = html + "<option value='All'>All</option>";
    var colValue = getColumn("COLUMN");
    for( var i = 0; i < colValue.length; i++ ) {
        var valueRow = colValue[i];
        html = html + "<option value='" + valueRow.c + "'>" + valueRow.c + "-" + valueRow.v + "</option>";
    }
    $('#id').append(html);    

}

这里,COLUMN是保存值A1,A2,A3,B1

的键

此代码按照A3,A1,A2,B1

的顺序填充我的下拉列表

我希望我的下拉按照A1,A2,A3,B1

的顺序填充

虽然我alert(html);我得到了结果

<option value='All'>All   </option>";
<option value='A3'>A3-a3Value </option>";
<option value='A2'>A1-a2Value </option>";
<option value='A1'>A2-a1Value </option>";
<option value='B1'>B1-b1Value </option>";

并且它以完全相同的顺序填充。

我的问题是,我需要做什么,按顺序填充我的下拉列表? 我还处于java脚本和Jquery的初学者阶段。感谢您的帮助

由于

3 个答案:

答案 0 :(得分:0)

你可以试试这个:

function dropdown(){
    var html = html + "<option value='All'>All</option>";
    var colValue = getColumn("COLUMN");
    colValue.sort();
    for( var i = 0; i < colValue.length; i++ ) {
        var valueRow = colValue[i];
        html = html + "<option value='" + valueRow.c + "'>" + valueRow.c + "-" + valueRow.v + "</option>";
    }
    $('#id').append(html);    

}

答案 1 :(得分:0)

根据你所说的,看起来colValue看起来像这样:

colValue = [
  { c="A3", v="a3Value" },
  { c="A1", v="a2Value" } // etc.
]

所以你需要决定要排序的属性,然后你可以创建一个比较器:

function createComparator(property) {
    return function(a, b) {
        return a[property] > b[property];
    };
}

您可以这样使用它:

colValue.sort(createComparator("c"));

根据这个SO回答:How to sort javascript objects based on their properties, specifying the property

答案 2 :(得分:0)

由于valueRow是一个对象而不是一个数组,并且您希望对valueRow.v进行排序,因此您需要的不仅仅是Array.sort()

看看lodash的sortByhttp://lodash.com/docs#sortBy

_.sortBy(valueRow, 'c')