2021年1月5日星期二

Javascript - getElementsByTagName - skip first element

i found a script that creates a table of content for sharepoint sites. It works fine, but at our sharepoint sites the first headline (H1) is the page title. So i have to skip the first Headline (Page title).

Does anybody know which part i have to edit to fit the skript for my needs? =)

    <!--   The TOC Container.  The most important thing to note is the ID.  The ID is used by the CSS and the JavaScript code.  -->  <ul id="sp-toc"></ul>    <style type="text/css">      #sp-toc {          padding: 10px;          /* Add a padding between the border and the TOC content */          background-color: #f9f9f9;          /* Add a background color of the TOC */          min-width: 200px;          /* Add only a minimal width like that, the TOC can be extensible */          display: inline-block;          border: 1px solid #aaaaaa;          /* Add a border arround the TOC */          list-style: none;          /* Remove default style list */      }        #sp-toc li {          /* If you need to add custom style on all <li> */      }        #sp-toc li a {          text-decoration: none;          /* Remove default link underline */      }        #sp-toc .class-toc-h1 {          /* currently, the first level supported by the script */      }        #sp-toc .class-toc-h2 {          /* Add a indentation greatter than the previous one */          padding-left: 10px;      }        #sp-toc .class-toc-h3 {          /* Add a indentation greatter than the previous one */          padding-left: 20px;      }        #sp-toc .class-toc-h4 {          /* Add a indentation greatter than the previous one */          padding-left: 30px;      }        #sp-toc .class-toc-h5 {          /* Add a indentation greatter than the previous one */          padding-left: 40px;      }        #sp-toc .class-toc-h6 {          /* Add a indentation greatter than the previous one */          padding-left: 50px;      }  </style>  <script type="text/javascript">      /**       * The main function to build TOC       */      function buildToc() {          /* Init title level counters */          var countH1 = countH2 = countH3 = countH4 = countH5 = countH6 = 0;            /**           * DOMElement : the TOC container retrieved by ID           */          var toc = document.getElementById("sp-toc");            /**           * Insert into TOC container the chapters           */          toc.innerHTML = nodesToc();            /**           * TOC Builder           */          function nodesToc() {              /* Get all HTML tags from the current page */              var obj = document.getElementsByTagName("*");              var tagList = "H1;H2;H3;H4;H5;H6;";              var str = "";              /* Loop on each HTML tag */              for (var i = 0; i < obj.length; i++) {                  /* If tag is a title tag */                  if (tagList.indexOf(obj[i].tagName + ";") >= 0) {                      /* Get the number of the multilevel list in accordance with the current title */                      var lvl = getNumberLevel(obj[i].tagName);                      /* HTML template */                      str += "<li class='" + getClassLvl(obj[i].tagName) + "'><a href='#title-" + i + "'>" + lvl + " " + obj[i].innerHTML + "</a></li>";                      obj[i].id = "title-" + i;                  }              }              return str;          }            /**           * Get CSS class in accordance with the title level           */          function getClassLvl(_tagName) {              return "class-toc-h" + _tagName.replace(/h/ig, '');          }            /**           * Multilevel list generator           */          function getNumberLevel(_tagName) {              if (_tagName === "H1") {                  countH2 = countH3 = countH4 = countH5 = countH6 = 0;                  return ++countH1;              } else if (_tagName === "H2") {                  countH3 = countH4 = countH5 = countH6 = 0;                  return countH1 + "." + ++countH2;              } else if (_tagName === "H3") {                  countH4 = countH5 = countH6 = 0; /* Reset next level number */                  return countH1 + "." + countH2 + "." + ++countH3;              } else if (_tagName === "H4") {                  countH5 = countH6 = 0; /* Reset next level number */                  return countH1 + "." + countH2 + "." + countH3 + "." + ++countH4;              } else if (_tagName === "H5") {                  countH6 = 0; /* Reset next level number */                  return countH1 + "." + countH2 + "." + countH3 + "." + countH4 + "." + ++countH5;              } else if (_tagName === "H6") {                  return countH1 + "." + countH2 + "." + countH3 + "." + countH4 + "." + countH5 + "." + ++countH6;              }          }      }      /* Register TOC function after SP page is loaded */      _spBodyOnLoadFunctionNames.push("buildToc");  </script>  

Source: https://blog.lsonline.fr/2018/12/23/create-a-dynamic-table-of-content-for-your-sharepoint-wiki-pages/

https://stackoverflow.com/questions/65582143/javascript-getelementsbytagname-skip-first-element January 05, 2021 at 11:50PM

没有评论:

发表评论