與此問題類似here我想了解如何從下拉列表中刪除重複的選項,但是我想映射一個ID列表以搜索並查看如果他們有重複的選項拼接出來,而不是隻有一個輸入選擇器。從下拉列表中刪除多個重複的選項
這方面的一個例子是如下:
<select id="MeatList">
<option value="OBgYN7" >Ham</option>
<option value="ELmn5">Beef</option>
<option value="KrUKt6">Chicken</option>
<option value="OBgYN7" selected="selected">Ham</option>
</select>
<select id="Seats">
<option value="2" >Table For Two</option>
<option value="3">Table For Three</option>
<option value="5">Table for Five</option>
<option value="10" >Party Table</option>
</select>
<select id="Lastname">
<option value="Tao" >The Tao's</option>
<option value="Smith">The Smith's</option>
<option value="Samuels">The Samuels'</option>
<option value="Smith" >The Smith's</option>
</select>
正如你所看到的,MeatList和姓氏有重複值的投入,我希望能夠搜索所有下拉重複值框(或內部文本)並將它們拼接在一起。這是可能的通過某種映射?
的代碼中使用將是:
[].slice.call(fruits.options)
.map(function(a){
if(this[a.innerText]){
if(!a.selected) fruits.removeChild(a);
} else {
this[a.innerText]=1;
}
},{});
而且得到我的意思通過映射下拉列表的想法,我會用這樣的代碼:
var idlist= ["MeatList", "Seats", "Lastname"];
var handlelists = idlist.join("|");
[].slice.call(handlelists.options)
.map(function(a){
if(this.search([a.innerText])){
if(!a.selected) handlelists.removeChild(a);
} else {
this[a.innerText]=1;
}
},{});
是由服務器端腳本生成的選擇?如果是,請考慮在那裏完成工作 – 2014-08-29 07:06:58
您是否想要自行清除每個清單,還是重新組合清單?我們也可以假設值和文本都是重複的(即只有文本的值?) – ocodo 2014-08-29 07:38:09
@EmacsFodder每個列表都是自己的;是的,這是公平的假設文本是相同的值 – Brad 2014-08-29 07:45:19