Показать сообщение отдельно
  #1 (permalink)  
Старый 23.07.2015, 11:41
Новичок на форуме
Отправить личное сообщение для АлександраМТ Посмотреть профиль Найти все сообщения от АлександраМТ
 
Регистрация: 23.07.2015
Сообщений: 2

Из матрицы в древовидное меню
Добрый день!

В javascript пока в процессе знакомства, и возникла такая задачка в процессе обучения, которая затормозила...
Есть матрица [1,2,[3,4,[5,6,7],8],9,10].
С помощью функции (желательно, рекурсивной), нужно её превратить в меню вида:
<ul>
<li>1</li>
<li>2</li>
   <ul>
     <li>3</li>
     <li>4</li>
        <ul>
          <li>5</li>
          <li>6</li>
          <li>7</li>
        </ul>
     <li>8</li>
   </ul>
<li>9</li>
<li>10</li>
</ul>


Написала такой код:
function recursiveList (data) {
        var arr = data;
        var list = document.getElementById('list'); 
        var newlist = document.createElement('ul');
          for (var i = 0; i < arr.length; i++) {
                   var item = document.createElement("li");
                   item.appendChild(document.createTextNode(arr[i]));
                   newlist.appendChild(item);
            };
        list.appendChild(newlist);       
         for (var i = 0; i < arr.length; i++) {
           if (typeof(arr[i]) == 'object') {
                    return recursiveList(arr[i]);
            }
        };   
    
     return list;    
    }


Но пока что получаю значения в виде:
<ul>
<li>1</li>
<li>2</li>
<li>3 4 5 6 7 8</li>
<li>9</li>
<li>10</li>
</ul>

<ul>
  <li>3</li>
  <li>4</li>
  <li>5 6 7</li>
  <li>8</li>
</ul>

<ul>
    <li>5</li>
    <li>6</li>
    <li>7</li>
</ul>


Что нужно сделать, чтоб привести её в нужный вид? Буду очень благодарна помощи!
Ответить с цитированием