Получение выбранных параметров с помощью querySelectorAll

Интересно, возможно ли в Javascript получить выбранные в данный момент параметры в поле <select multiple>, используя API Selctors, а не "глупую" итерацию по всем параметрам.

select.querySelectorAll('option[selected="selected"]') возвращает только те параметры, которые были отмечены как предварительно выбранные в исходном HTML, что не то, что я ищу. Любые идеи?

Ответы

Ответ 1

document.querySelectorAll('option:checked')

Работает даже на IE9;)

Ответ 2

Я также испытал вашу проблему, я чувствую, что это связано с тем, что 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;
}