Javascript divs不显示对象文字的更新

Javascript divs不显示对象文字的更新,javascript,jquery,html,object-literal,Javascript,Jquery,Html,Object Literal,我有一个嵌套的对象文字,看起来像这样 goals = { "691473a7-acad-458e-bb27-96bac22467jj": { category: "personal", datecreated: "2013-10-20", goal: "brush teeth--morning", icon: "health", status: "completed", repeat: "no", username: "jimmysmi

我有一个嵌套的对象文字,看起来像这样

goals = {
  "691473a7-acad-458e-bb27-96bac22467jj": {
    category: "personal",
    datecreated: "2013-10-20",
    goal: "brush teeth--morning",
    icon: "health",
    status: "completed",
    repeat: "no",
    username: "jimmysmith",
    userguid: "0c7270bd-38e8-4db2-ae92-244de019c543"
  },
  "9e693231-e6d8-4ca9-b5c8-81ea7a8056hh": {
    category: "personal",
    datecreated: "2013-10-20",
    goal: "track spending money",
    icon: "dollar",
    status: "inprogress",
    username: "jimmysmith",
    userguid: "0c7270bd-38e8-4db2-ae92-244de019c543"
  },
  "8d23005d-f6f3-4589-bb85-a90510bc45gg": {
    category: "personal",
    datecreated: "2013-10-20",
    goal: "Brush teeth--night",
    icon: "health",
    status: "inprogress",
    username: "jimmysmith",
    userguid: "0c7270bd-38e8-4db2-ae92-244de019c543"
  }
};
我可以通过以下方法在页面上正确显示内容:

displayMyGoalList = function() {
  var completedHTML, inprogressHTML, missedHTML;
  completedHTML = [];
  inprogressHTML = [];
  missedHTML = [];
  $.each(goals, function(index, goal) {
    if (goal.userguid === userguid) {
      if (goal.category === goalCategory) {
        console.log(goal.goal + '  ' + goal.status);
        if (goal.status === 'completed') {
          return completedHTML.push('<li class="' + goal.status + '" data-userguid="' + goal.userguid + '" data-goalguid="' + index + '"><span class="goaltitle"><i class="fa-large icon-' + goal.icon + '"></i> ' + goal.goal + '</span><span class="goalstatus" data-goal="' + goal.goal + '"><input type="checkbox" checked></span><span class="goalremove"><button type="button" class="btn btn-mini btn-danger removegoal" data-removegoal="' + goal.goalguid + '"><b>X</b> </button></span><span class="chartbutton"><i class="fa-large icon-stats" ></i></span></li>');
        } else if (goal.status === 'inprogress') {
          return inprogressHTML.push('<li class="' + goal.status + '" data-userguid="' + goal.userguid + '" data-goalguid="' + index + '"><span class="goaltitle"><i class="fa-large icon-' + goal.icon + '"></i> ' + goal.goal + '</span><span class="goalstatus" data-goal="' + goal.goal + '"><input type="checkbox" ></span><span class="goalremove"><button type="button" class="btn btn-mini btn-danger removegoal" data-removegoal="' + goal.goalguid + '"><b>X</b> </button></span><span class="chartbutton"><i class="fa-large icon-stats" ></i></span></li>');
        } else {
          return missedHTML.push('<li class="' + goal.status + '" data-userguid="' + goal.userguid + '" data-goalguid="' + index + '"><span class="goaltitle"><i class="fa-large icon-' + goal.icon + '"></i> ' + goal.goal + '</span><span class="goalstatus" data-goal="' + goal.goal + '"><input type="checkbox" ></span><span class="goalremove"><button type="button" class="btn btn-mini btn-danger removegoal" data-removegoal="' + goal.goalguid + '"><b>X</b> </button></span><span class="chartbutton"><i class="fa-large icon-stats" ></i></span></li>');
        }
      }
    }
  });
  $(".goalsinprogress").html(inprogressHTML.join(""));
  $(".goalscompleted").html(completedHTML.join(""));
  $(".goalsmissed").html(missedHTML.join(""));
  return $(".goalsection").css({
    visibility: "visible"
  }).fadeIn(200);
};
我在显示函数中的每个位置都运行了console.log,所有对象都会显示出来。但是他们没有加入。有什么想法吗

我尝试在重画之前用.html(“”)和.empty()清空div,但这没有什么区别

多谢各位,
查理·马吉

这属于愚蠢的范畴。并解释了为什么在试图评论或回答时没有人注意到这一点

我想值得在这里提醒一下。我的问题是隐藏的,但很明显。我的每一美元都很好。这一切归结为大小写问题。我的代码在寻找一个名为“school”的字符串,但我的函数捕获的是一个名为“school”的值

在savegoal函数中,我所要做的就是改变这一点

category: $("#thecategory").val(),
对此

category: $("#thecategory").val().toLowerCase(),

试着用console.log调试每个数组并查看它的内容你能用一些模拟html制作一个JSFIDLE,这样我就可以看到发生了什么事吗?还有,
var目标在哪里?起初,我认为jQuery可能会因为字符串中的语法错误而忽略您的
.html()
,但它们都会被检出。我脑子里唯一能想到的另一件事是
goals
由于范围的原因,没有引用同一个对象。我在任何有意义的地方都运行了console.log。没有范围问题。目标是在创建新目标之前和之后显示正确的嵌套对象。我可能很快就造不出小提琴了。我应该去买感恩节晚餐的食品杂货。这是一把小提琴。很抱歉,由于缺少字体和css,这对测试不重要,所以非常混乱。您需要添加一个新学生来初始化先前存在的学生,然后初始化他们的数据。然后单击添加目标以添加目标,并查看该目标未显示在列表中。第557行的displayMyGoalList函数在用户单击函数(521)上正常工作,但在savegoal函数(491)之后不能正常工作。控制台日志显示每个函数之前的所有目标(在displayMyGoalList中),但不显示每个函数中的新目标。
category: $("#thecategory").val().toLowerCase(),