在Javascript中的multiselect标记中获取选定值
我有以下代码在Javascript中的multiselect标记中获取选定值,javascript,Javascript,我有以下代码 function searchFlights() { var select1 = document.getElementById("airports-select-1"); var selected1 = []; while(select1.selectedIndex != -1) { if(select1.selectedIndex != 0) selected1.push(select1.options[select1.selectedInd
function searchFlights() {
var select1 = document.getElementById("airports-select-1");
var selected1 = [];
while(select1.selectedIndex != -1) {
if(select1.selectedIndex != 0) selected1.push(select1.options[select1.selectedIndex].value);
select1.options[select1.selectedIndex].selected = false;
}
console.log(selected1);
}
这是正确的,但正如您从代码中看到的,这一行:
select1.options[select1.selectedIndex].selected = false;
正在取消选择该值
现在,我不想取消选择这些值。如果我取消注释代码中的那一行,代码将永远运行
对于使用Javascript从select标记中检索多个值,有没有更完善、更复杂的解决方案?这样做不行:
function searchFlights() {
var select1 = document.getElementById("airports-select-1");
var selected1 = [];
for (var i = 0; i < select1.length; i++) {
if (select1.options[i].selected) selected1.push(select1.options[i].value);
}
console.log(selected1);
}
函数searchFlights(){
var select1=document.getElementById(“airports-select-1”);
var selected1=[];
对于(变量i=0;i
函数searchFlights(){
var select1=document.getElementById(“airports-select-1”);
var selected1=[];
对于(变量i=0;i
aaa
bbb
ccc
ddd
eee
2018年更新:
- 如果
元素包含
属性,请使用该集合。目前仍在广泛使用的浏览器中,唯一不支持此功能的是IE(任何版本)。Edge确实支持它selectedOptions
- 如果不支持此选项,@j08691的答案仍然正确,但作为性能优化,您可以在
而不是selectedIndex
开始迭代选项。这是第一个选定选项的索引,如果未选择任何选项,则为0
-1
selections = Array.from(selectBox.options).filter(o => o.selected).map(o => o.value)
或
@Adam Leggett 2018年的更新非常简单,而且有效。我使用的是
Object.values
而不是Array.from
。但我不确定是否有区别。
selections = Array.from(selectBox.selectedOptions).map(o => o.value)