无法读取undefined属性'push'

时间:2016-05-20 07:25:47

标签: javascript jquery

我正在尝试将data属性值推送到数组参数,但它会在行参数[parent] .push(parent);

上抛出上述错误
var parameter = {};

var currentTabSelected = "";
var parent = "";

$("#categories").on("click", ":checkbox", function () {
    if($(this).is(":checked")) {
        parent = $(this).data("parent");
        console.log(parent)

        if (!(currentTabSelected  in parameter)) {
            parameter[currentTabSelected] = []
        }

        var found = $.inArray($(this).val(), parameter[currentTabSelected]) > -1;

        if (!found) {
            parameter[currentTabSelected].push($(this).val());
            parameter[parent].push(parent);
            console.log(parameter)
        }
    } else {
        var index = parameter[currentTabSelected].indexOf($(this).val());
        var parent_index = parameter[parent].indexOf(parent)

        if (index > -1) {
            parameter[currentTabSelected].splice(index, 1);
            parameter[parent].splice(parent_index , 1);
        }
    }
})

我该怎么做才能克服上述问题?

2 个答案:

答案 0 :(得分:2)

如果参数是对象,则应在使用之前创建密钥。 您正尝试访问参数中不存在的密钥。

例如,确保您的对象包含 currentTabSelectedparent

parameter[currentTabSelected] = []
parameter[parent] = []

初始化currentTabSelectedparent后,您可以对parameter[currentTabSelected]parameter[parent]执行操作。

答案 1 :(得分:-1)

前几天我遇到了同样的问题,解决方案直接与“这个问题”有关。关键词。你的这个'是指您的变量不属于的另一个范围。你可能想做一个

var that=this;

或者,如果您对ES6感到满意,可以使用箭头功能语法。