gpt4 book ai didi

javascript - 在 Javascript 中使用 CDATA block 内的变量?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:19:31 24 4
gpt4 key购买 nike

CDATA - block 非常适合将大块 HTML 或 CSS 编码为字符串。但是,我不知道如何在其中使用变量值。

例如,考虑这段 JavaScript 代码:

var FullName    = "Friedrich Hayek";
var ProfileCode = (<><![CDATA[
<div id="BigHonkingChunkO_HTML">
...Lot's o' code...

Name: $FullName$
Birth: $Birthdate$

...Lot's o' code...

... $FullName$ ...

...Lot's o' code...
</div>
]]></>).toString ();


如何让 $FullName$ 呈现为“Friedrich Hayek”而不是“$FullName$”?

请注意,有多个变量,每个变量都可以在 CDATA block 中使用几次。


备用代码示例:

var UserColorPref   = "red";
var UI_CSS = (<><![CDATA[
body {
color: $UserColorPref$;
}
]]></>).toString ();

希望将颜色属性设置为 red

最佳答案

够优雅吗?

function replaceVars(content, vars)
{
return content.replace(/\$(\w+)\$/g, function($0, $1)
{
return ($1 in vars ? vars[$1] : $0);
});
}

ProfileCode = replaceVars(ProfileCode, {"FullName" : "Friedrich Hayek"});

如果关联键并不重要,您可以随时选择使用:
sprintfvsprintf

编辑

将第二个参数设为可选怎么样?

function replaceVars(content, scope) {
if (!scope || typeof scope != "object") {
scope = this;
}

return content.replace(/\$(\w+)\$/g, function($0, $1) {
return ($1 in scope ? scope[$1] : $0);
});
}

// example1
var FullName = "Friedrich Hayek";
ProfileCode = replaceVars(ProfileCode);

// example2
var vars = {"FullName" : "Friedrich Hayek"};
ProfileCode = replaceVars(ProfileCode, vars);

关于javascript - 在 Javascript 中使用 CDATA block 内的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4637337/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com