Hallo,
function json2html(template, jsobj) {
return document.getElementById(template).innerHTML.replace(/${([^}]+)}/g,
function(full, key) { return jsobj[key] || ''; });
}
Macht Douglas Crockford auch so:
~~~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
Ich frage mich immer noch, warum man das Template nach den Markern untersucht {abc}, statt umgekehrt. Crockford untersucht ja immerhin noch r, ob es ein String ist, falls JObject[key] nicht existieren sollte. Das bräuchte man ja nicht, wenn man jedes key des Objektes durchlaufen würde. Vorteil wohl, dass man nur die keys abfrägt, die auch im Template vorhanden sind. Und sie auch dann mit Leerzeichen ersetzt, wenn das Objekt diese Eigenschaft garnicht hat.
Gruß
jobo