选择javascript数组

选择javascript数组,javascript,jquery,Javascript,Jquery,我想将所有选项保存为javaScript数组 Html Js 警报$options[i].val;无法工作,我有$options[I]。如果使用jQuery,则val不是函数: var arr = $('#mySelect option').map(function(){ return this.value; }).get(); 选项[i].val失败的原因是选项[i]是本机DOM节点,而不是jQuery对象 如果您想对纯JavaScript执

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

Html

Js


警报$options[i].val;无法工作,我有$options[I]。如果使用jQuery,则val不是函数:

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

选项[i].val失败的原因是选项[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);
}

另外,如果您想将选项中的值和文本内容作为简单的演示,请使用上面的第二个代码示例作为基础:

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);

参考资料:

“普通”JavaScript: . . . . . jQuery: . . 这是因为当您执行$options[i]时,您不会得到jquery对象,而是得到一个元素。使用价值:

尽管第二种方法将创建一个jquery对象,但这在本例中并不需要。

val不是选项标记的正确属性。使用值代替:

此外,如果从jQuery数组中选择[i],则会得到原始HTML元素。再次将其包装到jQuery中,以访问.val:

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

for(var i = 0; i < $options.length; i++ ) {
  alert($($options[i]).val()); 
}
选项1:阵列

选项如下所示:

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

 for(var i = 0; i < $options.length; i++ ) {
  alert($options.eq(i).val()); 
}
['0', '0', '0', '0']
{
  ' option 2 ': '0',
  ' option 3 ': '0',
  ' option 4 ': '0',
  ' option 5 ': '0'
}
备选案文2:对象

如果您想在选项2或选项3中保存文本,那么您可能应该将其存储在Javascript对象中,而不是数组中。看看这个:

var options = {};

$("#mySelect option").each(function() {
  options[$(this).html()] = $(this).val();
});
选项如下所示:

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

 for(var i = 0; i < $options.length; i++ ) {
  alert($options.eq(i).val()); 
}
['0', '0', '0', '0']
{
  ' option 2 ': '0',
  ' option 3 ': '0',
  ' option 4 ': '0',
  ' option 5 ': '0'
}

您试图存储什么,值还是文本?选项是select DOM对象中的一个数组,而不是您正在执行的操作的单独DOM实体。尝试$select.options[i].val+1以获得其他人答案中的$$options[i]上的.eq
var options = [];

$("#mySelect option").each(function() {
  options.push($(this).val());
});
['0', '0', '0', '0']
var options = {};

$("#mySelect option").each(function() {
  options[$(this).html()] = $(this).val();
});
{
  ' option 2 ': '0',
  ' option 3 ': '0',
  ' option 4 ': '0',
  ' option 5 ': '0'
}