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标签,设置变量使用。