Advertisement
Guest User

Untitled

a guest
Jul 16th, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.15 KB | None | 0 0
  1. <ul class="table-of-contents"></ul>
  2.  
  3. <script type="text/javascript">
  4. document.addEventListener('DOMContentLoaded', function () {
  5. var contentsList = document.getElementsByClassName('table-of-contents')[0]; // 目次を追加する先
  6. // h3、h4要素を取得
  7. var matches = document.querySelectorAll('.entry-content h3, .entry-content h4');
  8. // 取得した見出しタグ要素の数だけ以下の操作を繰り返す
  9. matches.forEach(function (value, i) {
  10. // 見出しタグ要素のidを取得し空の場合は内容をidにする
  11. var id = value.id;
  12. if(id === '') {
  13. id = value.textContent;
  14. value.id = id;
  15. }
  16. // 要素がh3タグの場合
  17. if(value.tagName === 'H3') {
  18. var li = document.createElement('li');
  19. var a = document.createElement('a');
  20. // 追加する<li><a>タイトル</a></li>を準備する
  21. a.innerHTML = value.textContent;
  22. a.href = '#' + value.id;
  23. li.appendChild(a)
  24. // table-of-contentsの中に要素を追加する
  25. contentsList.appendChild(li);
  26. }
  27. // 要素がh4タグの場合
  28. if(value.tagName === 'H4') {
  29. var ul = document.createElement('ul');
  30. var li = document.createElement('li');
  31. var a = document.createElement('a');
  32. // コンテナ要素である<contentsList>の中から最後の<li>を取得する。
  33. var lastUl = contentsList.lastElementChild;
  34. var lastLi = lastUl.lastElementChild;
  35. // 追加する<ul><li><a>タイトル</a></li></ul>を準備する
  36. a.innerHTML = value.textContent;
  37. a.href = '#' + value.id;
  38. li.appendChild(a)
  39. ul.appendChild(li);
  40. // 最後の<li>の中に要素を追加する
  41. lastLi.appendChild(ul);
  42. }
  43. });
  44. // 最後に画面にレンダリング
  45. contentsList.appendChild(contentsList);
  46. });
  47. </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement