有一种称为 supplant 的技术可以做到这一点。不是我写的,我想是道格拉斯·克罗克福德写的。但我会引用它:
既然您的 JavaScript 程序已经接收到数据,它可以用它做什么?最简单的事情之一是客户端 HTML 生成。
var template = '<table border="{border}"><tr><th>Last</th><td>{last}</td></tr>' +
'<tr><th>First</th><td>{first}</td></tr></table>';
请注意,我们有一个 HTML 模板,其中包含三个变量。然后我们将获得一个 JSON 对象,其中包含与变量匹配的成员。
var data = {
"first": "Carl",
"last": "Hollywood",
"border": 2
};
然后我们可以使用替代方法将数据填充到模板中。
mydiv.innerHTML = template.supplant(data);
JavaScript 字符串不附带替代方法,但这没关系,因为 JavaScript 允许我们扩充内置类型,为它们提供我们需要的功能。
String.prototype.supplant = function (o) {
return this.replace(/{([^{}]*)}/g,
function (a, b) {
var r = o[b];
return typeof r === 'string' ?
r : a;
}
);
};
来自http://www.json.org/fatfree.html
我见过的一种避免模板的混乱变量分配的技术是:
<script id="rowTemplate" type="text/html">
<tr>
<td>Field A:</td>
<td><input type='text' name='fielda[{id}]'></td>
<td>Field B:</td>
<td><textarea name='fieldb[{id}]'></textarea></td>
</tr>
</script>
这将使您编写更漂亮的代码,因为您可以使用 getElementById 引用它。
因此,在您的情况下,您无需使用 JSON 对象填充它,而是查看需要添加和替换 id 的行数。