4

次のjsonオブジェクトがあります。

var json1 = {"00" : "00", "15" : "15", "30" : "30", "45" : "45"};

上記のjsonを解析するselect要素を次のように準備しています。

var selElem = $('<select>', {'name' : name, 'grp' : grp});
for(key in json1)
    selElem.append($('<option>', {value:key, text: json1 [key]}));

ただし、作成されるselect要素は次のとおりです。

<select>
    <option value="15">15</option>
    <option value="30">30</option>
    <option value="45">45</option>
    <option value="00">00</option>
</select>

ここでの問題は、json1オブジェクトに最初の要素として00が含まれているが、select要素では最後に作成されることです。

この問題の回避策または解決策。

4

1 に答える 1

6

順序を維持したい場合は、配列を使用します。

var json1 = [{val:"00",txt:"00"}, 
             {val:"15",txt:"15"}, 
             {val:"30",txt:"30"}, 
             {val:"45",txt:"45"}];

そしてそれをループします:

var selElem = $('<select>', {'name' : name, 'grp' : grp});
for(var i=0;i<json1.length;(i+=1)){
    selElem.append($('<option>', {value:json1[i].val, text: json1[i].txt})); 
}

このjsfiddleを確認してください

于 2012-06-15T05:59:35.797 に答える