summaryrefslogtreecommitdiff
path: root/scripts/toc.js
blob: 107c846a0fdb620bba9d09478b16db23b8399eee (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// i am a C# developer
// trying javascript

function toc() {
    const tocDiv = document.getElementById("toc");
    const content = document.getElementById("main");
    const headers = content.querySelectorAll('h1, h2, h3, h4, h5, h6');
    
    console.log(headers)

    const ul = document.createElement("ul");
    tocDiv.appendChild(ul)

    for (var i = 0; i < headers.length; i++) {
        if (headers[i].hasAttribute('id')) {
            const li = document.createElement("li");
            var level = headers[i].tagName[1];
            console.log(level + headers[i].tagName + headers[i].id)
            if (level == 1) {
                const a = document.createElement("a");
                ul.appendChild(li);
                li.appendChild(a);
                a.href = "#" + headers[i].id
                a.textContent = headers[i].textContent
            }
            else
            {
                var nowUl = document.createElement("ul");
                ul.appendChild(nowUl);

                for (var j = 0; j < level - 2; j++) {
                    const currentUl = document.createElement("ul");
                    nowUl.appendChild(currentUl);
                    nowUl = currentUl;
                }
                
                const currentLi = document.createElement("li");
                const a = document.createElement("a");
                nowUl.appendChild(currentLi);
                currentLi.appendChild(a);
                a.href = "#" + headers[i].id
                a.textContent = headers[i].textContent
            }
        }
    }
}