JavaScript 模板引擎

做的一个模板引擎绑定Json数据的一个模板引擎,小巧便捷,简单易懂,适合json小数据

效果图

HTML

<table id="table1" class="t1" >
            <thead>
                <tr>
                    <th>编号</th>
                    <th>星期</th>
                    <th>次数</th>
                    <th>营销类型</th>
                    <th colspan="2">操作</th>
                </tr>
            </thead>
            <tbody id="tbody1">
                <tr>
                    <td>{ID}</td>
                    <td>{Week}</td>
                    <td>{counts}</td>
                    <td>{Types}</td>
                    <td><input type="button" value="编辑" onclick="editor('{ID}')" /></td>
                    <td><input type="button" value="删除" onclick="deletes('{ID}')" /></td>
                </tr>
            </tbody>
        </table>

JavaScript 引擎方法

function temp(json,id) {
            var doc = document.getElementById(id);
            var _html = "";
            var docHtmls = doc.innerHTML.replace(/[\r\t\n]/g, " ");

            for (var i = 0; i < json.length; i++) {
                var innerHtmls = docHtmls;
                for (var _json in json[i]) {
                    var value =json[i][_json];//var value = eval("(json[i]." + _json + ")");//==>json[i].ID
                    var _replace = new RegExp("[{]" + _json + "[}]", "g");
                    innerHtmls = innerHtmls.replace(_replace, value);
                }
                _html += innerHtmls;
            }
            doc.innerHTML = _html;
        }

调用

temp(json, "doc");

 

2018/05/08更新模板引擎方法

更新日志:1.添加模板缓存,

                  2.在模板引擎中添加处理json不存在键的数据处理

//缓存要操作模板
var tempCache = {};
/**
 * 绑定数据到 table
 * @param {} json  后台json数据
 * @param {} trName 前台模板tr id
 * @returns {} object
 */
function bandTableList(json, id) {
    var data = document.getElementById(id);
    var cacheHtmls = tempCache[id] =tempCache[id] || data.innerHTML.replace(/[\r\t\n]/g, " ");
    var tbodyHtml = "";
    for (var i = 0; i < json.length; i++) {
        var innerHtmls = cacheHtmls;
        for (var _json in json[i]) {
            var value = json[i][_json];//var value = eval("(json[i]." + _json + ")");//==>json[i].ID
            var regex = new RegExp("[{]" + _json + "[}]", "g");
            innerHtmls = innerHtmls.replace(regex, value);
        }
        tbodyHtml += innerHtmls.replace(/[{][a-zA-Z0-9]*[}]/g,"");
    }
    data.innerHTML = tbodyHtml;
}

 

 

 

测试Json 

注,在使用json字符串时,注意不能使用json字符串,需要转成对象,可以使用 eval("("+json字符串+")")或者 JSON.parse(json字符串)

[{"ID":1,"Week":"周一","counts":"320","Types":"邮件营销","ord":1},{"ID":8,"Week":"周一","counts":"120","Types":"联盟广告","ord":1},{"ID":15,"Week":"周一","counts":"150","Types":"视频广告","ord":1},{"ID":22,"Week":"周一","counts":"320","Types":"直接访问","ord":1},{"ID":29,"Week":"周一","counts":"820","Types":"搜索引擎","ord":1},{"ID":2,"Week":"周二","counts":"332","Types":"邮件营销","ord":2},{"ID":9,"Week":"周二","counts":"132","Types":"联盟广告","ord":2},{"ID":16,"Week":"周二","counts":"232","Types":"视频广告","ord":2},{"ID":23,"Week":"周二","counts":"332","Types":"直接访问","ord":2},{"ID":30,"Week":"周二","counts":"932","Types":"搜索引擎","ord":2},{"ID":3,"Week":"周三","counts":"301","Types":"邮件营销","ord":3},{"ID":10,"Week":"周三","counts":"101","Types":"联盟广告","ord":3},{"ID":17,"Week":"周三","counts":"201","Types":"视频广告","ord":3},{"ID":24,"Week":"周三","counts":"301","Types":"直接访问","ord":3},{"ID":31,"Week":"周三","counts":"901","Types":"搜索引擎","ord":3},{"ID":4,"Week":"周四","counts":"334","Types":"邮件营销","ord":4},{"ID":11,"Week":"周四","counts":"134","Types":"联盟广告","ord":4},{"ID":18,"Week":"周四","counts":"154","Types":"视频广告","ord":4},{"ID":25,"Week":"周四","counts":"334","Types":"直接访问","ord":4},{"ID":32,"Week":"周四","counts":"934","Types":"搜索引擎","ord":4},{"ID":5,"Week":"周五","counts":"390","Types":"邮件营销","ord":5},{"ID":12,"Week":"周五","counts":"90","Types":"联盟广告","ord":5},{"ID":19,"Week":"周五","counts":"190","Types":"视频广告","ord":5},{"ID":26,"Week":"周五","counts":"390","Types":"直接访问","ord":5},{"ID":33,"Week":"周五","counts":"1290","Types":"搜索引擎","ord":5},{"ID":6,"Week":"周六","counts":"330","Types":"邮件营销","ord":6},{"ID":13,"Week":"周六","counts":"230","Types":"联盟广告","ord":6},{"ID":20,"Week":"周六","counts":"330","Types":"视频广告","ord":6},{"ID":27,"Week":"周六","counts":"330","Types":"直接访问","ord":6},{"ID":34,"Week":"周六","counts":"1330","Types":"搜索引擎","ord":6},{"ID":7,"Week":"周日","counts":"320","Types":"邮件营销","ord":7},{"ID":14,"Week":"周日","counts":"210","Types":"联盟广告","ord":7},{"ID":21,"Week":"周日","counts":"410","Types":"视频广告","ord":7},{"ID":28,"Week":"周日","counts":"320","Types":"直接访问","ord":7},{"ID":35,"Week":"周日","counts":"1320","Types":"搜索引擎","ord":7}]

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值