如果您使用 jQuery:
var arr = $('#mySelect option').map(function(){
return this.value;
}).get();
JS 小提琴演示。
options[i].val()
失败的原因options[i]
是本机 DOM 节点,而不是 jQuery 对象。
如果你想用纯 JavaScript 做同样的事情:
var opts = document.getElementById('mySelect').getElementsByTagName('option'),
arr = [];
for (var i = 0, len = opts.length; i < len; i++) {
arr.push(opts[i].value);
}
JS 小提琴演示。
或者,对于更新的浏览器:
var opts = document.querySelectorAll('#mySelect option'),
arr = [];
for (var i = 0, len = opts.length; i < len; i++) {
arr.push(opts[i].value);
}
JS 小提琴演示。
在稍微更现代的浏览器中:
var arr = [].map.call(document.querySelectorAll('#mySelect option'), function(a){
return a.value;
});
console.log(arr);
JS 小提琴演示。
此外,如果您想同时获取 s 中的 thevalue
和text-content option
(作为一个简单的演示,使用上面的第二个代码示例作为基础):
var opts = document.getElementById('mySelect').getElementsByTagName('option'),
arr = [], tmp;
for (var i = 0, len = opts.length; i < len; i++) {
tmp = opts[i];
arr.push({'value' : tmp.value, 'content' : (tmp.textContent || tmp.innerText)})
}
console.log(arr);
JS 小提琴演示。
参考: