Показать сообщение отдельно
  #15 (permalink)  
Старый 09.05.2011, 21:39
Аватар для Amphiluke
   ☽
Отправить личное сообщение для Amphiluke Посмотреть профиль Найти все сообщения от Amphiluke
 
Регистрация: 07.01.2011
Сообщений: 254

С вашим кодом разбираться лень…
Я сделал бы так примерно:
function Mod2() {
    var lis = document.getElementsByTagName("li");
    var outLis = [];
    for (var i = 0; i < lis.length; i++) {
        if (lis[i].parentNode.parentNode.nodeName.toLowerCase() != "li") {
            outLis.push(lis[i]);
        }
    }
    var tbl = document.createElement("table"), tr, td, inUl, inLis;
    for (var j = 0; j < outLis.length; j++) {
        inUl = outLis[j].getElementsByTagName("ul")[0];
        inLis = (inUl) ? inUl.getElementsByTagName("li") : [];
        tr = tbl.insertRow(-1);
        td = tr.insertCell(-1);
        td.rowSpan = (inLis != false) ? inLis.length : 1;
        td.innerHTML = outLis[j].getElementsByTagName("span")[0].innerHTML;
        td = tr.insertCell(-1);
        td.innerHTML = (inLis != false) ? inLis[0].innerHTML : "";
        for (var k = 1; k < inLis.length; k++) {
            tr = tbl.insertRow(-1);
            td = tr.insertCell(-1);
            td.innerHTML = inLis[k].innerHTML;
        }
    }
    tbl.setAttribute("rules", "all");
    tbl.style.border = "1px solid #000";
    document.body.appendChild(tbl);
    return false;
}


Использование:
<ul>
<li><span>Level 1 list element</span>
<ul>
    <li>11</li>
    <li>12</li>
    <li>13</li>
    <li>14</li>
    <li>15</li>
</ul>
</li>
<li><span>Level 2 list element</span>
<ul>
    <li>21</li>
    <li>22</li>
    <li>23</li>
    <li>24</li>
    <li>25</li>
</ul>
</li>
<li><span>Level 3 list element</span>
<ul>
    <li>31</li>
    <li>32</li>
    <li>33</li>
    <li>34</li>
    <li>35</li>
</ul>
</li>
</ul>
<p><a href="#" onclick="return Mod2();">Create Table!</a></p>

Последний раз редактировалось Amphiluke, 09.05.2011 в 21:45.
Ответить с цитированием