DOMのinnerHTMLに流し込む

Tipsです。JSmartyで処理した結果をDOMのinnerHTMLに流し込む方法のご紹介。現在、JSmarty0.4系開発中。

JSmarty#fetchの利用

tpl = new JSmarty();
tpl.assign("foo","Hello World!!");
document.getElementById('hoge').innerHTML = tpl.fetch("string:{$foo}");

PHPやっていてdisplayばかり使っているのでfetch利用わすれちゃいますが…JSmary#fetchやSmarty#fetchともにテンプレート処理してその結果を返すという仕様です。JSmartyではdisplayよりfetchのほうを多様するかと思います。

JSmarty.System.print()のハック

JSmarty.System.print = function(str){
    document.getElementById('hoge').innerHTML = str;
};
tpl = new JSmarty();
tpl.assign("foo","Hello World!!");
tpl.display("string:{$foo}");

JSmarty#displayを使ってinnerHTMLに代入したい場合はJSmarty.System.printをハックするのが便利です。JSmarty.System.printのデフォルトがdocument.writeなのでDOMノード形成後は利用しづらくなってしまいます。