2015-06-16 35 views
-2

我有2选择下拉列表,我想按值排序。我怎样才能做到这一点?按值排序选择下拉列表,而不是文本在javascript

<select id="select1"> 
    <option value="1-1/4">1 1/4"</option> 
    <option value="1/2">1/2"</option> 
    <option value="1">1"</option> 
    <option value="2-1/2">2 1/2"</option> 
    <option value="2">2"</option> 
    <option value="3/4">3/4"</option> 
    <option value=""3">3"</option> 
</select> 
<select id="select2"> 
    <option value="E">East</option> 
    <option value="N">North</option> 
    <option value="O">Other</option> 
    <option value="S">South</option> 
    <option value="W">West</option> 
</select> 

我想这样的排序是:

  • 1/2"
  • 1 1/4"
  • 1"
  • 2 1/2"
  • 2 “
  • 3/4”
  • 3“

    我想对它进行排序,如:

  • 西

  • 其他

+0

到现在为止,最好的办法这样做是为了在HTML中或在生成HTML时进行。 –

回答

0

HTMLSelectElement有一个options性质是类似数组的,所以我们可以从它抢的选项,对它们进行排序,并将它们添加回:

setTimeout(display.bind(null, "2..."), 500); 
 
setTimeout(display.bind(null, "1..."), 1000); 
 
setTimeout(function() { 
 
    sortSelect("select1"); 
 
    sortSelect("select2"); 
 
    display("Sorted"); 
 
}, 1500); 
 

 
function sortSelect(id) { 
 
    var sel = document.getElementById(id); 
 
    var options = Array.prototype.slice.call(sel.options); 
 
    sel.options.length = 0; 
 
    options.sort(function(a, b) { 
 
    return a.value.localeCompare(b.value); 
 
    }); 
 
    options.forEach(function(opt) { 
 
    sel.options.add(opt); 
 
    }); 
 
} 
 

 
function display(msg) { 
 
    document.getElementById("display").innerHTML = msg; 
 
}
<div id="display">3...</div> 
 
<select id="select1" size=7> 
 
    <option value="1-1/4">1 1/4"</option> 
 
    <option value="1/2">1/2"</option> 
 
    <option value="1">1"</option> 
 
    <option value="2-1/2">2 1/2"</option> 
 
    <option value="2">2"</option> 
 
    <option value="3/4">3/4"</option> 
 
    <option value="3&quot;">3"</option> 
 
</select> 
 
<select id="select2" size=5> 
 
    <option value="E">East</option> 
 
    <option value="N">North</option> 
 
    <option value="O">Other</option> 
 
    <option value="S">South</option> 
 
    <option value="W">West</option> 
 
</select>

相关问题