2011-10-17 53 views
1

從JSON完成拉取數據,但在循環中嘗試從子元素(即:子項1,2等)中提取附加信息時出現問題。Mootools JSON(拉Childs,Childeren)

http://jsfiddle.net/VVAFM/7/

{ 
    "title": "Main Title", 
"items": [ 
    { 
     "title": "Sub Title 1 " 
    }, 
    { 
     "title": "Sub Title 2", 
     "items": [ 
      { 
       "title": "Sub Item 1" //CAN'T GET MY HANDS ON THESE ITEMS!!!!! 
      }, 
      { 
       "title": "Sub Item 2" 
      } 
     ] 
    }, 
    { 
     "title": "Sub Title 3", 
     "items": [ 
      { 
       "title": "Sub Item 1" 
      }, 
      { 
       "title": "Sub Item 2" 
      } 
     ] 
    }, 
    { 
     "title": "Sub Title 4 " 
    } 
] 
} 

這裏是我的嘗試,試圖拉「子項」到已經建立的李中的另一個UL認證。

var addItemsLi = function(itemsLi){ 
     itemsLi.each(function(itemLi){ 
      var el = new Element('li'), 
       name = new Element('a', {'html': itemLi.title}).inject(el); 

      if (itemLi.items){ 
        var ul = new Element('ul'), 
         li = new Element('li').inject(ul), 
         subItem = new Element('a', {'html': itemLi.items.title}).inject(li); 
      }; 

       el.inject(gallery); 
     }); 
    }; 

回答

2

這裏是工作提琴:http://jsfiddle.net/maniator/VVAFM/11/

您通過項目陣列忘了循環:

var addItemsLi = function(itemsLi) { 
    itemsLi.each(function(itemLi) { 
     var el = new Element('li'), 
      name = new Element('a', { 
       'html': itemLi.title 
      }).inject(el); 
     if (itemLi.items) { 
      var ul = new Element('ul').inject(el) 
      for(var i = 0; i < itemLi.items.length; i++){ 
       var li = new Element('li').inject(ul); 
        subItem = new Element('a', { 
         'html': itemLi.items[i].title 
        }).inject(li); 
      } 
     }; 

     el.inject(gallery); 
    }); 
}; 
+0

非常感謝尼爾,你讓我完全瘋狂! – Starboy

1

您可以通過子項目還需要循環,嘗試:

var addItemsLi = function(itemsLi){ 
    itemsLi.each(function(itemLi){ 
     var el = new Element('li'), 
      name = new Element('a', {'html': itemLi.title}).inject(el); 
     if (itemLi.items){ 
      var ul = new Element('ul'); 
      itemLi.items.each(function(item){ 
       var li = new Element('li').inject(ul), 
       subItem = new Element('a', {'html': item.title}).inject(li); 
      }); 
     }; 
     el.inject(gallery); 
    }); 
}; 
+0

該解決方案也可以工作,但尼爾擊敗了它。感謝Prusse的迴應和幫助! – Starboy