参考地址:http://www.zhangxinxu.com/wordpress/2012/09/javascript-html-json-template/
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>js模板</title>
</head>
<body>
<!--一般而言,HTML模板都是放在<textarea>标签中的,据说这样只会有一次的DOM渲染;且HTML的换行什么的可以完整保留。<textarea>标签有个克星——就是其自身,<textarea>标签无法嵌套<textarea>标签;因此,含有文本域的HTML片段不能直接放在<textarea>元素中作为模板。-->
<!--HTML模板-->
<textarea style="display:none;">
<li>
<a href="javascript:" data-id="$couponid$">
<img src="$imgsrc$" width="240" height="180" />
<p>$traffic$</p>
<p>$buynum$人购买</p>
<div>
<div><del class="g6 db">¥$cost$现金券</del>$discount$折</div>
<strong class="cr price r pr20">¥$price$</strong>
</div>
<h3>$resname$</h3>
</a>
</li>
</textarea>
<script src="http://libs.baidu.com/jquery/2.1.1/jquery.min.js"></script>
<script>
//数据
var JSON = {
url: "ajax.php?author=www.zhangxinxu.com",
data: [{
couponid: "111",
imgsrc: "test1.JPG",
resname: "俏江南 仙乐斯广场",
traffic: "肇嘉浜路沿线",
buynum: 180,
cost: 100,
discount: 8.5,
price: 85
}, {
couponid: "222222",
imgsrc: "222222.jpg",
resname: "申城五月天",
traffic: "静安寺",
buynum: 0,
cost: 100,
discount: 8.0,
price: 80
}, {
couponid: "3",
imgsrc: "go-baby.jpg",
resname: "申城五月天",
traffic: "静安寺",
buynum: 0,
cost: 100,
discount: 8.0,
price: 80
}]
};
//一个固定的基于字符串原型的扩展方法
String.prototype.temp = function(obj) {
return this.replace(/\$\w+\$/gi, function(matchs) {
var returns = obj[matchs.replace(/\$/g, "")];
return (returns + "") == "undefined"? "": returns;
});
};
//动态添加DOM
var htmlList = ''
// textarea中的模板HTML
, htmlTemp = $("textarea").val();
JSON.data.forEach(function(object) {
htmlList += htmlTemp.temp(object);
});
console.log(htmlList);
// htmlList就是我们需要的HTML代码啦!
$("<ul></ul>").html(htmlList).appendTo($("body"));// 插入到页面里
</script>
</body>
</html>