質問する
1506 次
3 に答える
2
これを試して
var select = document.getElementById('select');
var sorted = Array.prototype.slice.call(select.options).sort(function(a, b) {
if(a.label < b.label) return -1;
if(a.label > b.label) return 1;
return 0;
});
for(var i = 0; i < sorted.length; i++) {
select.add(sorted[i]);
}
ラベル順。他のプロパティに変更するだけです。
読み取り専用options
であることに注意してください。
注: IE 8 以下では動作しません
于 2012-10-23T15:13:40.590 に答える
2
これを試してみてください。
var select = document.getElementById("example-select");
var options = select.options;
var newOption = new Option('Text 1', 'Value1');
for (var i = 0, len = options.length; i < len; i++) {
if (newOption.text.localeCompare(options[i].text) < 0) {
break;
}
}
select.insertBefore(newOption, options[i] || null);
于 2012-10-23T15:15:15.487 に答える
0
いくつかの方法があります。1つは、オプション値(またはテキスト、並べ替えたいもの)の配列を作成し、名前がオプション値(またはテキスト)で値がへの参照であるプロパティを持つオブジェクトを作成することです。オプション。
配列を並べ替えてから、メンバー値を使用してオブジェクトからオプションを取得し、配列を繰り返し処理します。
function sortOptionsByValue(select) {
var a = [], o = {}, opt;
for (var i=0, iLen=select.options.length; i<iLen; i++) {
opt = select.options[i];
a.push(opt.value);
o[opt.value] = opt;
}
a.sort();
while (i--) {
select.insertBefore(o[a[i]], select.firstChild);
}
// Optional, make first option selected
select.selectedIndex = 0;
}
他の方法もありますが、上記は1つだけです。ただし、ECMA-262準拠のブラウザで動作し、ネイティブオブジェクトのように動作するホストオブジェクトに依存せず、W3CDOMCoreが指示するように動作するだけです。
于 2012-10-23T15:22:03.337 に答える