Javascript 无法读取属性';推动';未定义的

Javascript 无法读取属性';推动';未定义的,javascript,jquery,Javascript,Jquery,我试图将数据属性值推入数组参数,但它在参数[parent]行抛出上述错误 var parameter = {}; var currentTabSelected = ""; var parent = ""; $("#categories").on("click", ":checkbox", function () { if($(this).is(":checked")) { parent = $(this).data("parent"); console

我试图将
数据
属性值推入数组参数,但它在参数[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);
        }
    }
})
如何克服上述问题?

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

例如,确保对象包含
currentTabSelected
parent

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

在初始化
currentTabSelected
parent
之后,您可以对
参数[currentTabSelected]
执行操作,
参数[parent]
我几天前遇到了相同的问题,解决方案与“this”关键字直接相关。您的“this”是指您的变量不属于的另一个范围。你可能想做一个

var that=this;

或者,如果您熟悉ES6,可以使用箭头函数语法。

哪里定义了
参数
数组?哪里定义了参数?旁注:这里不需要任何内部
()
如果(!(找到)){
只要
如果(!找到)
在语义上相同且更典型。参数[currentTabSelected]=[]是一个数组,但参数[paernt]不是,然后你会编辑例外以包含arrrayNo,他们正确地使用了
这个
。它由jQuery设置为引用
单击事件所连接的元素。非常感谢你重新选择了它。斜体并没有太好。:-)