2013-01-21 50 views
1

與模板:的JavaScript更換爲數組索引

<div id="temp" style="display:none;"> 
    <h3>{title}</h3> 
    <p>{body}</p> 
</div> 

而且腳本(jQuery的版本):

var html = $('#temp').html(); 
var vals = {"title":"Hello","body":"Good bye!"}; 
html = html.replace(/{(.+?)}/g, vals["$1"]); // this works if replaced with code below 

我得到了一個未定義爲我更換

下面的代碼工作,但似乎它應該與上面的嘗試一條線一起工作

matches = html.match(/{(.+?)}/g); 
for(m=0;m<matches.length;m++){ 
    var match=matches[m].replace("{","").replace("}", ""); 
    html = html.replace(matches[m],vals[match]) 
} 

這可以根據需要進行簡化嗎?

這對於模板引擎來說太簡單了,所以不需要去那裏。

+0

回調就像一個冠軍,謝謝! –

回答

2

您可以使用回調爲String.replace()第二個參數:

var result = html.replace(/{(.+?)}/g, function(c, m) { return vals[m]; }); 
+0

你是第一個:) – mplungjan

+0

@mplungjan是的,這就是爲什麼我刪除了我的答案:( –

+0

你們都沒有解釋爲什麼vals [「$ 1」]不起作用 – mplungjan