为什么我的DOM变量保留了价值?

时间:2018-04-03 02:36:26

标签: javascript jquery html dom

我正在尝试创建数据库信息的存档显示。我希望最终结果看起来像这样..

  
      
  • 2018      
        
    • 一月      
          
      • ITEM1
      •   
      • ITEM2
      •   
    •   
    • 四月      
          
      • 第1项
      •   
    •   
  •   

我遇到的问题是我的月份和项目值没有清除,最终也将自己嵌套回上个月。我相信我已经确定了逻辑上存在的缺陷,但我无法解决这个问题。任何帮助都应该受到赞赏。我的功能看起来像......

 function buildBooklistArchive( $, response  ) {

     var years = [];

     response.forEach( function(el) {

        var yearContainer = $("<ul>");
        var year = $("<li>").addClass("year-" + el.YEAR);
        var monthContainer = $("<ul>");
        var month = $("<li>").addClass("month-" + monthConverter(el.MONTH) );
        var titleContainer = $("<ul>");
        var currentMonth = "";

            if ( $.inArray(el.YEAR, years) === -1 ) {

              years.push(el.YEAR);
              currentMonth = monthConverter(el.MONTH);
              year.append("<h1>" + el.YEAR + "</h1>");
              month.append("<h4>" + currentMonth + "</h4>");
              var titles = el.booklists.split(",");

              titles.forEach( function (e) {
                   titleContainer.append(e);
              });

              month.append(titleContainer);
              monthContainer.append(month);
              year.append(monthContainer);
              $(".archive-list").append(year);

           }

           else {   
               currentMonth = monthConverter(el.MONTH);
               month.append("<h4>" + currentMonth + "</h4>");
               var titles = el.booklists.split(",");
               titles.forEach( function (e) {
                   titleContainer.append(e);
               });

            month.append(titleContainer);
            $( '.year-' + el.YEAR + ' ul' ).append( month.hasClass("month-" + currentMonth) );
      }


     });

}

所以发生的事情是,当我进入else语句时,月份仍然保持上个月的值,并将自己附加到前一个列表项的底部。我的想法是,这个变量会在循环的每次迭代时重置,但是对于DOM元素可能会有所不同吗?我得到的输出看起来像这样..

  
      
  • 2018      
        
    • 一月      
          
      • ITEM1
      •   
      • ITEM2
      •   
      • 四月      
            
        • 第1项
        •   
      •   
    •   
    • 四月      
          
      • 第1项
      •   
    •   
  •   

1 个答案:

答案 0 :(得分:1)

问题比我想象的要简单。变量像我原先想的那样被重置,但是我将最终结果附加到多个地方而不仅仅是月份容器。它应该是最后一行的monthContainer.append(月)。