如何使用 javascript 将 Markdown URL 格式替换为功能性 HTML 等效项?

问题描述 投票:0回答:1

提前抱歉,如果之前有人问过这个问题,我环顾四周,找不到任何可以回答我的问题或对我有用的东西

在我的 HTML 网页上,我有一个现有脚本,可以从外部源导入和打印文本。该源代码是用 markdown 编写的,因此它非常块状地打印

[text](url)
,而不是功能性地显示
<a href="url">text</a>

我的目标是编写一个脚本,手动检测打印文本中的 Markdown URL 格式,并将其转换为功能性 HTML 格式,这样它就不再打印一长串文本并正确显示为超链接。该脚本应该在导入外部文本后运行,以便正确检测。 我承认我对javascript完全陌生,所以我根本不熟悉它,我无法在任何地方找到一个现有的脚本来完成我正在寻找的事情,所以我一直在尝试弗兰肯斯坦我自己的,但对我来说并没有成功。感谢您的耐心,如果有人愿意引导我了解它是如何工作的,我也将不胜感激!

我在 github 上发现了一个

现有代码

,它宣称完全按照我的意愿行事。我想修改它以按类检测文本而不是精确文本,因为导入的文本是一个条件变量,根据外部源而变化。 我设法想出的是这个,但我再次重申,我对 javascript 一无所知,我只是根据外部示例来做相对相同的事情?

var prNs = document.getElementsByClassName('pk'); let elements = prNs.match(/\[.*?\)/g); if( elements != null && elements.length > 0){ for(el of elements){ let txt = el.match(/\[(.*?)\]/)[1];//get only the txt let url = el.match(/\((.*?)\)/)[1];//get only the link prNs = prNs.replace(el,'<a href="'+url+'" target="_blank">'+txt+'</a>') } }


javascript html markdown
1个回答
0
投票

    getElementsByClassName
  1. 返回类似数组的元素对象,因此,如果您有多个元素,或者只有一个元素,则需要通过索引进行循环
    0
    查找markdown链接的正则表达式是
  2. /\[([^\]]+)\]\(([^)]+)\)/g
  3. 你更新元素的方式不正确,你没有更新元素你更新了它的
  4. innerHTML
  5. 
    
  6. var elements = document.getElementsByClassName('pk'); for (let i = 0; i < elements.length; i++) { let element = elements[i]; let content = element.innerHTML; let markdownLinkRegex = /\[([^\]]+)\]\(([^)]+)\)/g; // Replace all Markdown links with HTML links in the content let updatedContent = content.replace(markdownLinkRegex, function(match, text, url) { return '<a href="' + url + '" target="_blank">' + text + '</a>'; }); element.innerHTML = updatedContent; }
© www.soinside.com 2019 - 2024. All rights reserved.