我想知道在Javascript中是否可以使用Selctors API获取<select multiple>
字段中当前选择的选项,而不是对所有选项进行“愚蠢”迭代。
select.querySelectorAll('option[selected="selected"]')
仅返回在原始HTML中标记为预选的选项,这不是我正在寻找的选项。有什么想法吗?
答案 0 :(得分:45)
document.querySelectorAll('option:checked')
甚至可以在IE9上运行;)
答案 1 :(得分:1)
我也遇到了你的问题,我觉得这与JavaScript无法识别DOM的变化有关。
这是一个解决方案:
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;
}