Не работает таблица на js

Рейтинг: 0Ответов: 0Опубликовано: 06.04.2023

У меня есть таблица на HTML и такая же таблица на JS.В них находится скрипт меню дерева. Проблема заключается в том, что скрипт меню дерева работает с HTML, а с написанной таблицей на js не работает.

Из за чего это может быть, и как решить эту проблему?

<aside>
    <table id="table1">
        <tr>
            <th>Имя</th>
            <th>Состояние</th>
            <th>Дата</th>
        </tr>
        <tr>
            <td>
              <ul id="myUL">
                <li><span class="caret">НАПИТКИ</span>
                  <ul class="nested">
                    <li>ВОДА</li>
                    <li>ЛИМОНАД</li>
                    <li><span class="caret">ЧАЙ</span>
                      <ul class="nested">
                        <li>Черный чай</li>
                        <li>Белый чай</li>
                      </ul>
                    </li>
                  </ul>
                </li>
              </ul>
            </td>
        </tr>
    </table>
</aside>
<script src="file.js"></script>
aside 
{
    width: 10%;
    padding-left: 15px;
    margin-left: 15px;
    float: left;    
    background-color: lightgray;
    height: 1000px;
}
td 
{
    vertical-align: top;
}
ul,#myUL 
{
    list-style-type: none;
}
#myUL 
{
    margin: 0;
    padding: 0;
}
.caret 
{
    cursor: pointer;
    user-select: none;
}
.caret::before 
{
    content: "\25B6";
    color: black;
    display: inline-block;
    margin-right: 6px;
}

.nested 
{
    display: none;
}
.active 
{
    display: block;
}

Таблица на js

function func()
{
    var table = document.getElementById("table1");
    table.innerHTML = " "
    var tr = document.createElement('tr');
    var th = document.createElement('th');
    th.innerHTML= "Напитки"
    tr.appendChild(th);
    table.appendChild(tr);

    var tr = document.createElement('tr');
        var td =  document.createElement('td');
            var ul =  document.createElement('ul');
                ul.setAttribute('id','myUL');
                var li =  document.createElement('li');
                    var span =  document.createElement('span');
                    span.className = "caret";
                    span.innerHTML=" Напитки";
                li.appendChild(span);
                
                    var ul1 =  document.createElement('ul');
                    ul1.className = "nested";

                        var li1 =  document.createElement('li');
                        li1.innerHTML= "Вода";
                        ul1.appendChild(li1);

                        var li1 =  document.createElement('li');
                        li1.innerHTML= "Лимонад";
                        ul1.appendChild(li1);

                        var li1 =  document.createElement('li');

                            var span1 =  document.createElement('span');
                            span1.className = "caret";
                            span1.innerHTML=" Напитки";
                            li1.appendChild(span1);
                            var ul2 =  document.createElement('ul');
                            ul2.className = "nested";

                                var li2 =  document.createElement('li');
                                li2.innerHTML= "Чай каркаде";
                                ul2.appendChild(li2);

                                var li2 =  document.createElement('li');
                                li2.innerHTML= "Чай белый";
                                ul2.appendChild(li2);

                            li1.appendChild(ul2);

                        ul1.appendChild(li1);

                    li.appendChild(ul1)
                ul.appendChild(li);
            td.appendChild(ul)
        tr.appendChild(td);
    table.appendChild(tr)
    
}

Скрип работы меню дерева

function open_close()
{
    const ot = document.querySelector('table')
    ot.addEventListener('click', e => {
  const o = e.target
  if (!o.classList.contains('caret')) return
  const ob = o.closest('li').querySelector('.nested')
  ob.classList.toggle("active")
  ob.classList.toggle("caret-down")
  const a = [...o.closest('td').querySelectorAll('.nested')].map(o => o.className)
  ot.querySelectorAll('td').forEach(o => {
    o.querySelectorAll('.nested').forEach((o, i) => {
      o.className = a[i]
    })
  })
})
}

Ответы

Ответов пока нет.