Javascript 使用querySelectorAll获取选定选项

Javascript 使用querySelectorAll获取选定选项,javascript,html-select,selectors-api,Javascript,Html Select,Selectors Api,我想知道在Javascript中,是否可以使用Selctors API而不是对所有选项进行“愚蠢”的迭代,在字段中获取当前选择的选项 select.querySelectorAll('option[selected=“selected”]”)仅返回在原始HTML中标记为预选的选项,这不是我要查找的。有什么想法吗?我也遇到过您的问题,我觉得这与JavaScript无法识别DOM中的更改有关 以下是一个解决方案: document.getElementById('test')。onclick=fu

我想知道在Javascript中,是否可以使用Selctors API而不是对所有选项进行“愚蠢”的迭代,在
字段中获取当前选择的选项


select.querySelectorAll('option[selected=“selected”]”)
仅返回在原始HTML中标记为预选的选项,这不是我要查找的。有什么想法吗?

我也遇到过您的问题,我觉得这与JavaScript无法识别DOM中的更改有关

以下是一个解决方案:

document.getElementById('test')。onclick=function(){
var select=document.getElementById('select');
var options=getSelectedOptions(选择);
console.log(选项);
};
函数getSelectedOptions(选择){
var结果=[];
var options=select.getElementsByTagName('option');
对于(变量i=0;i
document.queryselectoral('option:checked')


甚至可以在IE9上工作;)

我认为您唯一的选择是迭代所有
选项
元素并过滤掉未选中的元素。底部的浏览器兼容性如果jQuery是一个选项,那么您可以使用
:selected
选择器js识别对DOM的这些更改。问题在于所选的
DOM属性是不可序列化的。
selected
属性对应于
defaultSelected
DOM属性,因此在
[selected]
中查询属性将返回
defaultSelected
DOM属性设置为
true
的元素。
document.getElementById('test').onclick = function () {
    var select = document.getElementById('select');
    var options = getSelectedOptions(select);
    console.log(options);
};

function getSelectedOptions(select) {
    var result = [];
    var options = select.getElementsByTagName('option');
    for (var i = 0; i < options.length; i++) {
        if (options[i].selected)
            result.push(options[i]);
    };
    return result;
}