javascript - 将标签格式化为 Markdown
问题描述
解决方案
我会这样做
const html = `<div><h4>Some Title</h4>
<p><a href="somelink.com"><strong>Bold and then</strong> normal</a> <em>bold</em></p>
<p><a href="somelink2.com">Just normal</a></p>
</div>`
const toMarkdown = (text) => {
let obj = document.createElement("div");
obj.innerHTML = text;
[...obj.querySelectorAll("strong, em")].forEach(ele => ele.parentNode.replaceChild(document.createTextNode("*"+ele.textContent+"*"),ele));
[...obj.querySelectorAll("a")].forEach(ele => ele.parentNode.replaceChild(document.createTextNode("["+ele.textContent+"]("+ele.href+")"),ele));
[...obj.querySelectorAll("h4")].forEach(ele => ele.parentNode.replaceChild(document.createTextNode("####"+ele.textContent),ele));
[...obj.querySelectorAll("p")].forEach(ele => ele.parentNode.replaceChild(document.createTextNode(ele.textContent),ele)); // ignore?
[...obj.querySelectorAll("div")].forEach(ele => ele.parentNode.replaceChild(document.createTextNode(ele.textContent),ele));
return obj
}
console.log(toMarkdown(html).innerHTML)
推荐阅读
- html - 如何水平堆叠div?
- python - 无法在 Catalina、Macbook Pro (2017) 上下载 Python 3.7、64 位图形
- gradle - Gradle 多项目并行构建消耗 100% 的 CPU 时间
- javascript - 如何根据jQuery中另一个字段中的日期获取星期几
- android - 移除 onActivityResult 中的当前片段
- sql-server - 按日期排序很慢
- r - R:通过每次加1来完成下面的单元格
- python - PyQt5 tableView 显示底片为红色和 (x.xx)
- python - PonyORM 从类实体问题中检索对象
- c++ - 提升状态机语言 - 来自“动作”的“发布”事件