LINUX.ORG.RU

формирование оглавления для vimwiki/wiki

 , ,


0

1

Есть функция, которая делает оглавление для тега h1, было бы здорово это сделать для h1-h3

  <script type="text/javascript" charset="utf-8">
    function generateMenu() {
      var new_element = document.createElement('ul');
      new_element.style.listStyleType = "square";
      var elements = document.getElementsByTagName('h1');
      for (var element = 0; element < elements.length; element++) {
        var elem_data = elements[element].innerHTML
        var newLi = document.createElement('li');
        newLi.innerHTML = '<a href="#' + elem_data + '">' + elem_data + '</a>';
        new_element.insertBefore(newLi, new_element.children[element]);
      }
      document.body.insertBefore(new_element, document.body.firstChild);
    }
  </script>

Что-то типа:

    function generateMenu() {
      var myStringArray = ["h1", "h2", "h3"];
      var arrayLength = myStringArray.length;
      for (var i = 0; i < arrayLength; i++) {
      // some
      }

Весь документ

<!DOCTYPE html>
<html>

<head>
  <title>index</title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <script type="text/javascript" charset="utf-8">
    function generateMenu() {
      var new_element = document.createElement('ul');
      new_element.style.listStyleType = "square";
      var elements = document.getElementsByTagName('h1');
      for (var element = 0; element < elements.length; element++) {
        var elem_data = elements[element].innerHTML
        var newLi = document.createElement('li');
        newLi.innerHTML = '<a href="#' + elem_data + '">' + elem_data + '</a>';
        new_element.insertBefore(newLi, new_element.children[element]);
      }
      document.body.insertBefore(new_element, document.body.firstChild);
    }
  </script>
</head>

<body onload="generateMenu()">

  <div id="СТРУКТУРА ПРОГРАММЫ-Переменные-меню111">
    <h1 id="Переменные-меню111">Переменные-меню111</h1>
  </div>
  <div id="СТРУКТУРА ПРОГРАММЫ-Переменные-подменю222">
    <h2 id="Переменные-подменю222">Переменные-подменю222</h2>
  </div>
  <div id="СТРУКТУРА ПРОГРАММЫ-Переменные-подменю333">
    <h3 id="Переменные-подменю333">Переменные-подменю333</h3>
  </div>
  <div id="СТРУКТУРА ПРОГРАММЫ-Переменные-меню444">
    <h1 id="Переменные-меню444">Переменные-меню444</h1>
  </div>
  <div id="СТРУКТУРА ПРОГРАММЫ-Переменные-подменю555">
    <h2 id="Переменные-подменю555">Переменные-подменю555</h2>
  </div>
  <div id="СТРУКТУРА ПРОГРАММЫ-Переменные-подменю666">
    <h3 id="Переменные-подменю666">Переменные-подменю666</h3>
  </div>
</body>

</html>



Последнее исправление: Xwo (всего исправлений: 1)
Ответ на: комментарий от romanlinux

обновил топик. Если вкраце генерация оглавления

меню(h1)
    подменю1(h2)
        подменю2(h3)
меню1(h1)
    подменю1(h2)
        подменю1(h3)

Xwo
() автор топика
Последнее исправление: Xwo (всего исправлений: 3)
Ответ на: комментарий от Xwo
    function generateMenu() {
        let arr_h = [
            'h1',
            'h2',
            'h3'
        ];
        for(let qq = 0; qq < arr_h.length; qq++) {
            var new_element = document.createElement('ul');
            new_element.style.listStyleType = "square";
            var elements = document.getElementsByTagName('h1');
            for (var element = 0; element < elements.length; element++) {
              var elem_data = elements[element].innerHTML
              var newLi = document.createElement('li');
              newLi.innerHTML = '<a href="#' + elem_data + '">' + elem_data + '</a>';
              new_element.insertBefore(newLi, new_element.children[element]);
            }
            document.body.insertBefore(new_element, document.body.firstChild);      
        }
    }

romanlinux ★★★
()
Ответ на: комментарий от romanlinux

Так что, ul li ul li ul ли - так не получится сделать?

Xwo
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.