模板引擎更新

function myTpl(id,data) {
        var str = document.getElementById(id).innerHTML;
        str = str.replace(/\"/g,'\\"');
        var inLp=false;
        var t={
                'for':function(s){
                        s = s.replace('/  /g',' ').replace('/  /g',' ');
                        var sa = s.split(' ');
                        return '");'+'var lpdata = data["'+sa[1]+'"];for(var i=0;i<lpdata.length;i++){'+';p.push("';
                },
                'if':function(s){
                        s = s.replace('/  /g',' ').replace('/  /g',' ');
                        var sa = s.split(' ');
                        if(inLp) {
                                return '");'+'if(lpdata[i]["'+sa[1]+'"]'+sa[2]+''+sa[3]+'){'+';p.push("';
                        } else {
                                return '");'+'if(data["'+sa[1]+'"]'+sa[2]+''+sa[3]+'){'+';p.push("';
                        }
                },
                'else':function(){
                        return '");}else{;p.push("';
				},
				'set':function(s){
					s = s.replace('/  /g',' ').replace('/  /g',' ');
					var sa = s.split(' ');
					return '");'+'var '+sa[1]+' = data["'+sa[1]+'"];p.push("';
				},
                'fn':function(s){
                        s = s.replace('/  /g',' ').replace('/  /g',' ');
                        var sa = s.split(' ');
                        if(sa[1]) {
                                if(inLp) {
                                        return '"+'+sa[1]+'(lpdata[i]["'+sa[2]+'"])+"';
                                } else {
                                        return '"+'+sa[1]+'(data[i]["'+sa[2]+'"])+"';
                                }
                        } else {
                                return '';
                        }
                }
        };
        var s = 'var p=[];p.push("'+str.replace(/[\r\n\t]/g,'').replace(/\[.*?\]/g,function(d){
                var ms = d.match(/\[(.*?)\]/);
                ms = ms[1];
                var r='',m;
                if(ms) {
                        var pre = d.substr(0,2);
                        if(pre=='[/') {
                                r =  '");};p.push("';
                                inLp=false;
                        } else if(pre=='[=') {
                                m = d.match(/=(.*?)\]/);
                                if(m[1]) {
                                        if(inLp) {
                                                r = '"+lpdata[i]["'+m[1]+'"]+"';
                                        } else {
                                                r = '"+data["'+m[1]+'"]+"';
                                        }
                                } else {
                                        r = d;
                                }
                        } else {
                                m = ms.split(' ');
                                if(m[0]) {
                                        if(m[0]=='for') {
                                                inLp=true;
                                        }
                                        r = t[m[0]](ms);
                                } else {
                                        r = d;
                                }
                        }
                } else {
                        r = d;
                }
                return r;
        })+'");return p.join("");';
        var fn = new Function('data',s);
        return fn(data);
}

添加了set标签,设置变量使用。