Показать сообщение отдельно
  #1 (permalink)  
Старый 16.12.2013, 08:09
Новичок на форуме
Отправить личное сообщение для timkit Посмотреть профиль Найти все сообщения от timkit
 
Регистрация: 27.01.2012
Сообщений: 8

Сохранить древовидную структуру в JSON
Всем привет! Очень прошу помочь с решением задачи.
Есть дерево:
<body>
<ul id="tree">
    <li data-id="0">Автомобили
        <ul>
            <li data-id="1">Japan
                <ul>
                    <li data-id="2">Toyota
                        <ul>
                            <li data-id="3">Camry</li>
                            <li data-id="4">Avensis</li>
                        </ul>
                    </li>
                    <li data-id="5">Mazda</li>
                </ul>
            </li>
        </ul>
</ul>
</body>

необходимо это дерево поместить в объект вида:
var cars={
Автомобили:{"children":[1], id="0"},
Japan:  {"children":[2], id="1"},
Toyota:{"children":[3, 4], id="2"},
Mazda:{"children":[], id="5"}                  
}

пробовал разными способами делать обход дерева, но ничего не получается.
Через рекурсию:

function scan(el, obj) {
        var nodeList = el.childNodes;
        if (nodeList != null) {
            obj["children"]=[];
            for (var i = 0; i < nodeList.length; i++) {
                if (nodeList[i].nodeType == 1) {
                    if(nodeList[i].firstChild.nextSibling.dataset.id)
                    obj["child"].push(nodeList[i].firstChild.nextSibling.dataset.id);
                }

                scan(nodeList[i], obj["children"]);
            }
        }
       return obj;
    }
    scan(document.getElementById('tree'), {})
Ответить с цитированием