# Tiny Table-of-Contents JS Snippet
```js
const toc = document.getElementById('table-of-contents');
for (const x of document.querySelectorAll('h2, h3')) {
const id = x.innerText.replaceAll(/[^a-z0-9]/gi,'');
x.id = id;
const item = `
${x.innerText}`;
switch (x.tagName.toLowerCase()) {
case "h2": toc.insertAdjacentHTML('beforeend', `${item}`); break;
case "h3": [...toc.querySelectorAll('ul')]?.pop()?.insertAdjacentHTML('beforeend', item); break;
}
}
```
---
## Example
The following markdown...
```md
# Title
lorem ipsum
## Chapter 1
lorem ipssum
### Section A
lorem ipssum
## Chapter 2
lorem ipssum
### Section B
lorem ipssum
### Section C
lorem ipssum
```
...produces this HTML...
```html
Title
lorem ipsum
Chapter 1
lorem ipsum
Section A
lorem ipsum
Chapter 2
lorem ipsum
Section B
lorem ipsum
Section C
lorem ipsum
```
...and JS transforms it on page load.
```html
Title
lorem ipsum
Chapter 1
lorem ipsum
Section A
lorem ipsum
Chapter 2
lorem ipsum
Section B
lorem ipsum
Section C
lorem ipsum
```