Javascript 尝试删除json对象时发生ReferenceError

Javascript 尝试删除json对象时发生ReferenceError,javascript,jquery,html,json,Javascript,Jquery,Html,Json,背景: 我正在制作一个登记表,用户可以在其中输入无限多人的信息。每个人都作为json对象输入,并由字段组成,如下所示 addPerson: function() { //Create a json object for this person. var person = { id: $("#dialog").data("person"), fname: $("#dialog input[name=pfna

背景:

我正在制作一个登记表,用户可以在其中输入无限多人的信息。每个人都作为json对象输入,并由字段组成,如下所示

    addPerson: function() {
        //Create a json object for this person.


        var person = {
            id: $("#dialog").data("person"),
            fname: $("#dialog input[name=pfname]").attr("value"),
            lname: $("#dialog input[name=plname]").attr("value"),
            title: $("#dialog input[name=ptitle]").attr("value"),
            bio:   $("#dialog textarea[name=pbio]").attr("value"),
            photo: $("#dialog input[name=photo]").attr("value"),
            owner: $("#dialog input[name=owner]").prop("checked") ? $("input[name=owner]").attr('checked', true),
            percent: $("#dialog input[name=ppercent]").attr("value"),
            edu: $("#dialog textarea[name=pedu]").attr("value"),
            skills: $("#dialog textarea[name=pskills]").attr("value"),
            prof: $("#dialog textarea[name=pprof]").attr("value"),
            awards: $("#dialog textarea[name=pawards]").attr("value"),
            community: $("#dialog textarea[name=pcommunity]").attr("value"),
            years: $("#dialog input[name=pyears]").attr("value"),
            compensation: $("#dialog textarea[name=pcompensation]").attr("value"),
        }

        $(this).dialog("close");

        upsmart.people.finishAddPerson(person);
    },
添加对象后,每个人都会在网格上显示其个人资料图片和姓名,请参见下面的代码:

    finishAddPerson: function(person) {
        upsmart.people.people[person.id] = person;
        if($("#person"+person.id).length == 0) {
            box = $("<div class='person'></div>").attr("id","person"+person.id);
            box.data("person",person.id);
            box.insertBefore($("#new"));
        } else {
            box = $("#person"+person.id);
            box.html("");
        }

        box.append($("<img/>").attr("src",person.photo));
        box.append($("<div/>").attr("class","label").html(person.fname+" "+person.lname));
    }
finishadperson:函数(person){
upsmart.people.people[person.id]=person;
if($(“#person”+person.id).length==0){
box=$(“”).attr(“id”,“person”+person.id);
数据框(“人员”,人员id);
框。插入前($(“#新”);
}否则{
框=$(“#person”+person.id);
box.html(“”);
}
append($(“”)attr(“class”,“label”).html(person.fname+“”+person.lname));
}
我现在的位置: 根据benashby的建议,我对finishadeperson函数进行了如下修改:

    finishAddPerson: function(person) {
        upsmart.people.people[person.id] = person;
        if($("#person"+person.id).length == 0) {
            box = $("<div class='person'></div>").attr("id","person"+person.id);
            box.data("person",person.id);
            box.insertBefore($("#new"));
        } else {
            box = $("#person"+person.id);
            box.html("");
        }

        box.append($("<img/>").attr("src",person.photo));
//added a delete button here
        box.append($("<button/>").attr("class","remove-user-btn"));
        box.append($("<div/>").attr("class","label").html(person.fname+" "+person.lname));
//delete function added here, using person.id to signify the profile to be removed
        $('.remove-user-btn').bind('click', function(e) {
            removePerson($(this).attr(person.id);

            //Remove the containing div here as well
            $(this).parent().remove()
        });
    }
finishadperson:函数(person){
upsmart.people.people[person.id]=person;
if($(“#person”+person.id).length==0){
box=$(“”).attr(“id”,“person”+person.id);
数据框(“人员”,人员id);
框。插入前($(“#新”);
}否则{
框=$(“#person”+person.id);
box.html(“”);
}
追加($(“”)attr(“类”,“删除用户btn”);
append($(“”)attr(“class”,“label”).html(person.fname+“”+person.lname));
//此处添加了删除功能,使用person.id表示要删除的配置文件
$('.remove user btn').bind('click',函数(e){
removePerson($(this.attr)(person.id);
//在这里也删除包含div的部分
$(this.parent().remove())
});
}
我的问题:

单击“删除”按钮失败,并在控制台中显示以下错误:

ReferenceError:未定义removePerson

removePerson($(this.attr(person.id))


我想我应该发布免责声明,我仍在努力自学javascript和jquery,所以如果问题看起来真的很简单……很可能是。尽管如此,在此问题上的任何帮助都将不胜感激。非常感谢!:-)

您是否遗漏了上面的一些相关代码?我没有看到名为
removePerson
@Archer的函数,谢谢您的回复!现在你提到它,似乎removePerson真的没有被定义为任何东西……::摇头::回头看我显然没有真正思考或理解的提示,作者建议“removePerson(personId)将利用javascript
slice
函数将该用户从内存阵列中删除。“考虑到这一点(或使用任何其他方法),我如何使removePerson变得有意义,以满足我的需要?谢谢你的提示。如果我没有看错的话,
upsmart.people.people
是一个数组,你可以将
people
添加到其中。对吗?