我有一些带有数组作为名称属性的选择。 这个选择在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);
});
更新
迭代从特定select的name属性创建的数组
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/