Javascript无法识别HTML数组

时间:2014-06-15 15:05:22

标签: javascript jquery json

如何将这种HTML输入传递给JavaScript,以便识别这些数组值?

<input type="checkbox" id="collection[]" value="0">
<input type="checkbox" id="collection[]" value="1">
<input type="checkbox" id="collection[]" value="2">]

我唯一的想法(从未使用js这种方式,tbh)是通过以下方式实现的:

$("#collection").val();

但是我遇到了 undefined 错误。我不知道如何让javascript识别变量集合是一个数组,并且必须这样传递。

提前致谢!

3 个答案:

答案 0 :(得分:1)

你不能拥有重复的ID。虽然在这种情况下重复的ID会为您提供所需的输出,但将它们用于多个元素是无效的。

<input type="checkbox" name="collection[]" value="0">
<input type="checkbox" name="collection[]" value="1">
<input type="checkbox" name="collection[]" value="2">

您可以通过多种方式访问​​基于数组的元素。

jQuery .map() :替代 .each()

Demo

$("[name='collection[]']").map(function(){return $(this).val();}).get()

Working Demo用于检查已检查的输入。 要获得选中的复选框,

$('input').change(function () {
    console.log($("[name='collection[]']:checked").map(function () {
        return $(this).val();
    }).get());
});

答案 1 :(得分:1)

请记住,ID必须在您的文档中是唯一的。所以由'name'设置而不是id。

您可以使用

$('#someid').is(":checked");

单独检查每个复选框,或使用jQuery选择器循环它们

循环设置

<input type="checkbox" name="checkboxes" value="0">
<input type="checkbox" name="checkboxes" value="1">
<input type="checkbox" name="checkboxes" value="2">

然后用jQuery,

$('input[name=checkboxes]:checked').each(function(i, e) {
        e.val();   //The value of the checkbox that is selected
});

答案 2 :(得分:0)

$("#collection")

这意味着,“在页面上找到一个id等于收集的元素”,当然它找不到任何东西。您可以使用.each函数,您可以使用复选框属性。例如;

var myCheckBoxArray = []

$("input[type='checkbox']").each(function(i,elm){
    myCheckBoxArray.push(elm);
});