javascript - 选择 javascript 数组

标签 javascript jquery

我想将所有选项保存为 javaScript 数组

HTML

 <select id="mySelect">
  <option value="0"> option 2 </option>
  <option value="0"> option 3 </option>
  <option value="0"> option 4 </option>
  <option value="0"> option 5 </option>
 </select>

JS

 $select = $("#mySelect");
 $options = $select.find("option");

 for(var i = 0; i < $options.length; i++ ) {
  alert($options[i].val()); 
}

alert($options[i].val()); 不起作用,我得到 $options[i].val() is not a function

最佳答案

如果您使用的是 jQuery:

var arr = $('#mySelect option').map(function(){
              return this.value;
          }).get();

JS Fiddle demo .

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 Fiddle demo .

或者,对于更新的浏览器:

var opts = document.querySelectorAll('#mySelect option'),
    arr = [];
for (var i = 0, len = opts.length; i < len; i++) {
    arr.push(opts[i].value);
}

JS Fiddle demo .

在稍微现代的浏览器中:

var arr = [].map.call(document.querySelectorAll('#mySelect option'), function(a){
    return a.value;
});

console.log(arr);

JS Fiddle demo .

此外,如果您想从选项中获取文本内容(作为一个简单的演示,使用上面的第二个代码示例作为基础):

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 Fiddle demo .

引用文献:

关于javascript - 选择 javascript 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17265771/

相关文章:

javascript - 基本 Javascript 点击功能未加载

javascript - try catch 模式比先错误更好吗?

javascript - 如何在 React Native 的标题中放置搜索栏?

javascript - 如何在另一个函数中使用在函数中声明的变量?

jquery - 如何使用 IE8 的 jquery 或 javascript 将 marginTop 设置为 Div

javascript - Jquery:将输入值与数组对象进行比较,看看它们是否完全匹配

javascript - 使用javascript访问具有多个值的选择选项标签中的值

javascript - 在 javascript codeigniter php 中使用 ajax 成功函数获取数据时,如何禁用页面重新加载?

asp.net - jQuery 验证 : validate atleast one checkbox is selected from a list where names are different

javascript - 更改传单开放街道 map 的中心