Mootools JSON(牵引儿童,儿童)

时间:2011-10-17 18:51:18

标签: javascript json mootools

完成从JSON中提取数据,但在循环中尝试从子元素(即:子项1,2等)中提取其他信息时遇到问题。

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 "
    }
]
}

这是我试图将“SubItems”拉入已经创建的li中的另一个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 个答案:

答案 0 :(得分:2)

这是一个工作小提琴:http://jsfiddle.net/maniator/VVAFM/11/

你忘了循环遍历items数组:

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);
    });
};

答案 1 :(得分: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);
    });
};