You can use Array.prototype.map instead of an explicit loop.
var options = document.getElementById('test').options; var values = Array.prototype.map.call(options, function(val) { return val.value; });
Although you need to add it to Array.prototype if you support older browsers.
There is an implementation in MDC that you can use:
if (!Array.prototype.map) { Array.prototype.map = function(fun /*, thisp */) { "use strict"; if (this === void 0 || this === null) throw new TypeError(); var t = Object(this); var len = t.length >>> 0; if (typeof fun !== "function") throw new TypeError(); var res = new Array(len); var thisp = arguments[1]; for (var i = 0; i < len; i++) { if (i in t) res[i] = fun.call(thisp, t[i], i, t); } return res; }; }
source share