Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript中的multiselect标记中获取选定值_Javascript - Fatal编程技术网

在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年更新:

  • 如果
    元素包含
    selectedOptions
    属性,请使用该集合。目前仍在广泛使用的浏览器中,唯一不支持此功能的是IE(任何版本)。Edge确实支持它

  • 如果不支持此选项,@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)