diff options
Diffstat (limited to 'common/js/pandoc-menu.js')
-rw-r--r-- | common/js/pandoc-menu.js | 31 |
1 files changed, 25 insertions, 6 deletions
diff --git a/common/js/pandoc-menu.js b/common/js/pandoc-menu.js index af9153b..84fd020 100644 --- a/common/js/pandoc-menu.js +++ b/common/js/pandoc-menu.js | |||
@@ -1,13 +1,34 @@ | |||
1 | document.addEventListener('DOMContentLoaded', function () { | 1 | document.addEventListener('DOMContentLoaded', function () { |
2 | const headings = document.querySelectorAll('h1, h2, h3, h4, h5, h6'); | 2 | const menudiv = document.createElement('div'); |
3 | menudiv.className = 'side-menu'; | ||
4 | |||
5 | const menutitle = document.createElement('div'); | ||
6 | menutitle.textContent = document.title; | ||
7 | menudiv.appendChild(menutitle); | ||
8 | |||
9 | // a button to open/close nav list | ||
10 | const toggleNavButton = document.createElement('button'); | ||
11 | toggleNavButton.id = 'toggle-nav'; | ||
12 | toggleNavButton.textContent = '关闭'; | ||
13 | menudiv.appendChild(toggleNavButton); | ||
14 | |||
15 | // Add click event listener to the button | ||
16 | toggleNavButton.addEventListener('click', () => { | ||
17 | nav.style.display = nav.style.display === 'none' ? 'block' : 'none'; | ||
18 | toggleNavButton.textContent = toggleNavButton.textContent === '关闭' ? '打开' : '关闭'; | ||
19 | }); | ||
20 | |||
21 | // nav list itself | ||
3 | const nav = document.createElement('nav'); | 22 | const nav = document.createElement('nav'); |
4 | document.querySelector('.pandoc').insertBefore(nav, document.querySelector('.pandoc').firstChild); | 23 | menudiv.appendChild(nav); |
24 | document.querySelector('.pandoc').insertBefore(menudiv, document.querySelector('.pandoc').firstChild); | ||
5 | const topLevelList = document.createElement('ul'); | 25 | const topLevelList = document.createElement('ul'); |
6 | nav.appendChild(topLevelList); | 26 | nav.appendChild(topLevelList); |
7 | 27 | ||
8 | let currentLevel = topLevelList; | 28 | let currentLevel = topLevelList; |
9 | let lastLevel = 1; | 29 | let lastLevel = 1; |
10 | 30 | ||
31 | const headings = document.querySelectorAll('h1, h2, h3, h4, h5, h6'); | ||
11 | headings.forEach(heading => { | 32 | headings.forEach(heading => { |
12 | const listItem = document.createElement('li'); | 33 | const listItem = document.createElement('li'); |
13 | const anchor = document.createElement('a'); | 34 | const anchor = document.createElement('a'); |
@@ -31,9 +52,7 @@ document.addEventListener('DOMContentLoaded', function () { | |||
31 | lastLevel = level; | 52 | lastLevel = level; |
32 | }); | 53 | }); |
33 | 54 | ||
34 | // document.body.insertBefore(nav, document.body.firstChild); | 55 | // Add functionality for expanding/collapsing menu list |
35 | |||
36 | // Add functionality for expanding/collapsing | ||
37 | const navLinks = document.querySelectorAll('nav ul li'); | 56 | const navLinks = document.querySelectorAll('nav ul li'); |
38 | navLinks.forEach(link => { | 57 | navLinks.forEach(link => { |
39 | const sublist = link.querySelector('ul'); | 58 | const sublist = link.querySelector('ul'); |
@@ -49,4 +68,4 @@ document.addEventListener('DOMContentLoaded', function () { | |||
49 | }); | 68 | }); |
50 | } | 69 | } |
51 | }); | 70 | }); |
52 | }); \ No newline at end of file | 71 | }); |