[javascript] Marked를 사용하여 마크다운 문서에 목차를 추가하는 방법은?

먼저, Marked를 다운로드하고 HTML 문서에 스크립트를 추가합니다.

<script src="path/to/marked.js"></script>

다음으로, 목차를 추가할 마크다운 문서를 가져옵니다. 마크다운 문서를 HTML로 변환하기 위해 marked() 함수를 사용합니다.

var markdownText = `
# 제목 1
## 제목 1-1
### 제목 1-1-1
## 제목 1-2
# 제목 2
## 제목 2-1
`;

var htmlText = marked(markdownText);

이제 변환된 HTML 문서에 목차를 추가해야 합니다. 먼저, 변환된 HTML을 DOM으로 파싱합니다.

var parser = new DOMParser();
var doc = parser.parseFromString(htmlText, "text/html");

목차를 추가할 div 요소를 생성합니다.

var tocDiv = document.createElement("div");
tocDiv.id = "toc";

마크다운 문서의 모든 제목 요소(h1, h2, h3, 등)를 선택하고 순회하면서 목차를 생성합니다.

var headings = doc.querySelectorAll("h1, h2, h3, h4, h5, h6");

for (var i = 0; i < headings.length; i++) {
  var heading = headings[i];
  var link = document.createElement("a");
  link.href = "#" + heading.id;
  link.textContent = heading.textContent;

  tocDiv.appendChild(link);
}

마지막으로, 목차를 HTML 문서에 추가합니다.

document.body.insertBefore(tocDiv, doc.firstChild);

이제, 마크다운 문서에 목차가 추가되었습니다.

참고 자료: