是否可以在没有选择器的情况下替换文本?

Is it possible to replace text without selector?

我使用 javascript 将 markdown 转换为 html。

如果我在markdown中添加<span id="printHello></span>,转换后,我仍然可以使用getElementById()来获取引用。但是,有一个例外:

var abc = true;
<span id="printHello></span>
var def = false;

如果将标签添加到代码块内,它会在转换过程中被转义。我无法再获取该元素。

所以我在想是否可以添加一个标识符文本,在 markdown 转换为 html 后替换标识符文本。像这样:

var abc = true;
I_am_an_identifier
var def = false;

转换后,我得到这个:

<pre><code>var abc = true;
I_am_an_identifier
var def = false;
</code></pre>

所以我可以将 I_am_an_identifier 替换为 <span id="printHello></span>

是否可以通过内容替换?

您的问题的答案是,您可以使用 replace 方法将 HTML 中的字符串替换为另一个字符串。

document.body.innerHTML = document.body.innerHTML.replace('I_am_an_identifier', '<span id="printHello"></span>');

请注意,这将替换 I_am_an_identifier 的第一个实例,包括 HTML 代码中的任何实例(例如 class 名称等),因此请谨慎使用。

要替换目标字符串的所有实例,请使用带有全局标志的简单正则表达式:

document.body.innerHTML = document.body.innerHTML.replace(/I_am_an_identifier/g, '<span id="printHello"></span>');

Javascript 有标签

幸运的是,您可以以 JavaScript Label[ 的形式使用 identifier 关键字(假设您选择了 "printHello" ) =21=]:

<pre><code>var abc = true;
printHello: 
var def = false;
</code></pre>

你可以找到并用你喜欢的任何东西替换它。