使用querySelectorAll获取所选选项

时间:2013-03-23 12:06:10

标签: javascript html-select selectors-api

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

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

2 个答案:

答案 0 :(得分:45)

document.querySelectorAll('option:checked')

甚至可以在IE9上运行;)

答案 1 :(得分:1)

我也遇到了你的问题,我觉得这与JavaScript无法识别DOM的变化有关。

这是一个解决方案:

jsFiddle

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;
}