对象不支持属性或方法'push'

时间:2015-05-11 09:58:13

标签: javascript jquery html

我的网页上有一个隐藏字段,我想存储一组对象。这个html是:

<div><input type="hidden" id="CheckedSubGroups" value="[]" /></div>

然后我有以下jQuery:

 $(".SubGroupCheckBoxes").on("click", function() {
            if ($(this).is(':checked')) {
                var array = $("#CheckedSubGroups").val();
                array.push('test object');
                $("#CheckedSubGroups").val(array);
            } else
                // do other stuff

然而,这会引发“此对象不支持push属性或方法”错误

在调试器中,我已停在此行并检查数组对象的值,该值为“[]”

3 个答案:

答案 0 :(得分:2)

您是否尝试使用JSON处理它?喜欢......  var array = JSON.parse($("#CheckedSubGroups").val());
 $("#CheckedSubGroups").val(JSON.stringify(array);

$(".SubGroupCheckBoxes").on("click", function() {
    if (this.checked) {
        var array = JSON.parse($("#CheckedSubGroups").val());
        array.push('test object');
        $("#CheckedSubGroups").val(JSON.stringify(array));
    } else
        // do other stuff
    }
});

答案 1 :(得分:1)

我认为$("#CheckedSubGroups").val()可能会返回一个字符串而不是一个数组。

因此,您应该在调用push方法

之前将此字符串转换为数组
var array = JSON.parse($("#CheckedSubGroups").val());

答案 2 :(得分:0)

您不会将推送值定向到数组中。您必须需要一个数组对象。您的变量值需要转换为数组对象。

  

push()方法将新项添加到数组的末尾,然后返回   新的长度。

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.push("Kiwi");

http://www.w3schools.com/jsref/jsref_push.asp