在javascript中是否存在与gsub类似的内容?

Nic*_*ick 19 javascript css ruby jquery

有没有办法在javascript中做类似于ruby gsub的东西?我有一个本地html文件,我想处理并用内容替换某些模板变量,但我无法弄清楚如何用新内容替换模板变量.html包含如下的片段:

<div id="content">
    <h1>{{title}}</h1>
    {{content}}
</div>
Run Code Online (Sandbox Code Playgroud)

现在,如果我将每个模板变量包装在一个命名div中,那么我可以使用类似jquery的replaceAll方法来替换模板变量及其内容但我无法弄清楚如何在不将每个变量包装在div中的情况下执行它.

我只想做一些像$('document').gsub("{{title}}","我是一个标题").

有人有主意吗?

谢谢你的帮助!

Lri*_*Lri 31

如果其他人一般都在寻找与gsub等效的东西,那么这只会取代第一场比赛:

"aa".replace("a", "b") // "ba"
Run Code Online (Sandbox Code Playgroud)

//g 替换所有比赛:

"aa".replace(/a/g, "b") // "bb"
"aa".replace(new RegExp("a", "g"), "b"); // "bb"
Run Code Online (Sandbox Code Playgroud)


gna*_*nab 6

您可以通过DOM元素的innerHTML属性访问原始HTML ,或者使用html包装它的JQuery 属性,然后执行替换:

var html = $(document).html();
$(document).html(html.replace('{{title}}', 'I am a title');
Run Code Online (Sandbox Code Playgroud)

编辑:

正如Antti Haapala所指出的,替换整个文档HTML可能会产生您不想处理的副作用,比如重新加载脚本.因此,在执行替换之前,您应该深入到最具体的DOM元素,即:

var element = $('#content');
var html = element.html();
element.html(html.replace('{{title}}', 'I am a title');
Run Code Online (Sandbox Code Playgroud)