关于如何转换MarkDown文本并在Html内进行显示

今天遇到一个问题,从ChatGpt的API获取的文本格式为MarkDown,在HTML上使用textarea控件显示的时候就只是文字格式,并没有对MarkDown格式进行处理,今天就分享一下如何在Html上进行MarkDown格式文本的显示

1.创建一个HTML页面,包括textarea和一个用于显示Markdown内容的div:

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Textarea to Markdown</title>
    <script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
</head>
<body>
    <textarea style="font-size: 20px; width: 300px; height: 800px;" id="responseBox" name="responseBox" rows="4" cols="150" readonly>

2.将文本输入到div控件的.innerHTML属性上

html 复制代码
Example Markdown
This is an example of Markdown text.

Item 1

Item 2
</textarea>
<button onclick="convertToMarkdown()">Convert to Markdown</button>
<div id="markdownDisplay"></div>

php
Copy code
  <script>
      function convertToMarkdown() {
          var text = document.getElementById('responseBox').value;
          var markdownContent = marked(text);
          document.getElementById('markdownDisplay').innerHTML = markdownContent;
      }
  </script>
  </body>
  </html>

3.代码解释

  • textarea 元素用于输入或显示文本内容。
  • button 元素用于触发转换操作。
  • div 元素用于显示转换后的Markdown内容。
  • 使用JavaScript读取 textarea 的内容,并使用 marked 库将其转换为Markdown HTML,然后在 div 中显示。

在这里面使用的 https://cdn.jsdelivr.net/npm/marked/marked.min.js为MarkDown解释器的解析文件地址,如果无法使用有以下几种解决方式,我用的第一种,但是将地址更改了,CDN的解析地址可以自己再找一下,我是以下这个

html 复制代码
    <script src="https://unpkg.com/marked@13.0.2/marked.min.js"></script>

方法一:通过CDN引入

在HTML文件的 <head> 标签中添加以下脚本标签,从CDN加载 marked 库:

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Textarea to Markdown</title>
    <script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
</head>
<body>
    <textarea style="font-size: 20px; width: 300px; height: 800px;" id="responseBox" name="responseBox" rows="4" cols="150" readonly>
# Example Markdown
This is an example of **Markdown** text.
- Item 1
- Item 2
    </textarea>
    <button onclick="convertToMarkdown()">Convert to Markdown</button>
    <div id="markdownDisplay"></div>

    <script>
        function convertToMarkdown() {
            var text = document.getElementById('responseBox').value;
            var markdownContent = marked(text);
            document.getElementById('markdownDisplay').innerHTML = markdownContent;
        }
    </script>
</body>
</html>

方法二:使用npm安装(适用于Node.js项目)

1.首先,通过npm安装 marked

html 复制代码
npm install marked

2.然后,在你的JavaScript文件中引入 marked

python 复制代码
const marked = require('marked');

// 示例代码
function convertToMarkdown() {
    var text = document.getElementById('responseBox').value;
    var markdownContent = marked(text);
    document.getElementById('markdownDisplay').innerHTML = markdownContent;
}

方法三:下载并本地引入

  • markedGitHub仓库 下载 marked.min.js 文件。

  • marked.min.js 文件放置在你的项目文件夹中,例如 js 文件夹。

  • 在HTML文件的 <head> 标签中添加本地路径的脚本标签:

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Textarea to Markdown</title>
    <script src="js/marked.min.js"></script>
</head>
<body>
    <textarea style="font-size: 20px; width: 300px; height: 800px;" id="responseBox" name="responseBox" rows="4" cols="150" readonly>
# Example Markdown
This is an example of **Markdown** text.
- Item 1
- Item 2
    </textarea>
    <button onclick="convertToMarkdown()">Convert to Markdown</button>
    <div id="markdownDisplay"></div>

    <script>
        function convertToMarkdown() {
            var text = document.getElementById('responseBox').value;
            var markdownContent = marked(text);
            document.getElementById('markdownDisplay').innerHTML = markdownContent;
        }
    </script>
</body>
</html>
相关推荐
万少31 分钟前
第五款 HarmonyOS 上架作品 奇趣故事匣 来了
前端·harmonyos·客户端
OpenGL36 分钟前
Android targetSdkVersion升级至35(Android15)相关问题
前端
rzl021 小时前
java web5(黑马)
java·开发语言·前端
Amy.Wang1 小时前
前端如何实现电子签名
前端·javascript·html5
今天又在摸鱼1 小时前
Vue3-组件化-Vue核心思想之一
前端·javascript·vue.js
蓝婷儿1 小时前
每天一个前端小知识 Day 21 - 浏览器兼容性与 Polyfill 策略
前端
百锦再1 小时前
Vue中对象赋值问题:对象引用被保留,仅部分属性被覆盖
前端·javascript·vue.js·vue·web·reactive·ref
jingling5551 小时前
面试版-前端开发核心知识
开发语言·前端·javascript·vue.js·面试·前端框架
拾光拾趣录1 小时前
CSS 深入解析:提升网页样式技巧与常见问题解决方案
前端·css
莫空00001 小时前
深入理解JavaScript属性描述符:从数据属性到存取器属性
前端·面试