javascript - 如何迭代选择对象数组

标签 javascript jquery

我有一些带有数组作为名称属性的选择。 这个选择在html的不同部分可以有多个不同的值,所以我想迭代名称数组中存储项目的值。

我已经谷歌了几次,没有找到一个好的答案(也在堆栈中...),但是有人知道我如何使用 jquery 或 js 迭代选择数组的值(如果可能)如果不? 我尝试了这个但没有成功

Jquery 代码:

// i get the name of the select correctly
var itemName = $(this).find("select#selectToONE").attr("name");

// try to iterate through the values when the array grows... not work
$("select[@name='"+itemName+"[]']").each(function() { alert($(this).val());} );

这里可能有一些 html 代码在一个 TR,TD 中:

<select name="To[itemsONE][]" id="selectToONE"> 
<option>....</option>
<option>....</option>
</select>

其他TR、TD内选择

<select name="To[itemsONE][]" id="selectToONE">
<option>....</option>
<option>....</option>
</select>

谢谢。

最佳答案

要获得您需要的所有选项:

$("select[name='"+itemName+"[]'] option").each(function(i,o){
  alert(o.value);
});

更新

迭代从特定selectname属性创建的数组

var itemName = $("#selectToONE").attr("name"); // You have a string here 'To[itemsONE][]'
var s        = itemName.substring(itemName.indexOf('[')); //[itemsONE][]

现在,如果itemsONEIS使用变量或函数的名称,则使其工作会出现问题

var array = eval(s); //and iterate it in classic for loop

如果它不是变量的名称,您还需要将 SELECT 重命名为类似的名称

<select name="To['itemsONE'][]" ...

任何其他解决方案都涉及通过预定义模式或正则表达式手动解析 SELECT 的名称

关于javascript - 如何迭代选择对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7660304/

相关文章:

javascript - jQuery Mask 插件中的时间验证 24 小时格式

javascript - 如何在 jquery html 字符串中包含内联 onclick

javascript - 在javascript中获取矩阵的所有可能选项

javascript - Window.location 在 ajax 中被取消

javascript - 从javascript获取值到php并用php网格填充div(即在php文件中)

javascript - Jasmine JQuery 测试不会将 p 标记识别为隐藏

javascript - 使用 angularjs 对特定两个字段进行 ng-repeat 搜索?

javascript - 如何在 Chrome 扩展程序/应用程序中添加另一个 .html 页面?

jquery - 如何从 jqGrid 列获取单元格值以对背景色进行条件格式设置

jquery - 使用 :after pseudo-element dynamically using jquery 更改 div 的 css 属性