javascript中包含`{}时的字符串替换`
我使用模板和javascript为json数据生成htmls,这是tempalte:javascript中包含`{}时的字符串替换`,javascript,Javascript,我使用模板和javascript为json数据生成htmls,这是tempalte: <div id="template"> <div class="iwContainer"> <div class="iwHeaderContainer"> <div class="iw-title-container"> <span cla
<div id="template">
<div class="iwContainer">
<div class="iwHeaderContainer">
<div class="iw-title-container">
<span class="titleText">${name}</span> <a target="_blank" href="detail?fid=${id}" class="titleLink">Detail</a>
</div>
</div>
<div class="iwRichContainer">
<div class="iw-g-font">Address:${address}</div>
</div>
@{setsearchTemplate}
</div>
</div>
我称之为:
buildInfoContent({name:'name',id:2,address:'address'});
除了${id}
之外,所有的palcehodler都被替换了
通过firebug,我发现temlate是这样的:
.........<span class="titleText">${name}</span> <a target="_blank" href="detail?fid=$%7bid%7d" class="titleLink">Detail</a>.......
…..${name}。。。。。。。
因此,
id
没有被替换,如何修复它?看起来您的浏览器正在对{}
字符进行编码。您必须在regexp中说明这一点
这是未经测试,但。。。
/\$(\{124;%7b)(\w*)(\}124;%7d)/
这应该可以做到,或者类似的事情……想法是他们的想法。有时浏览器会用特殊字符做一些时髦的事情
编辑:要匹配键(中间匹配的组),请尝试使用传递给回调函数的第三个参数,如本例所示:它对我来说运行良好::(.我不测试其他机器,它可以工作,但不能在我自己的机器上。那么,有没有想法更改
{}
到其他字符
?谢谢,我使用您的regexp,我使用这个函数:函数(m,key){key=regexp.$2;返回item.hasOwnProperty(key)?item[key]:“”;}
我想知道这是否包含任何潜在问题?您应该能够在当前使用的正则表达式上复制上面的正则表达式,不必更改任何其他代码。不,如果不更改其他代码,键将是{
不是属性名。我知道你是对的,你想要第二个匹配的3组。我快疯了,Regexp.$2
在IE中返回空。
.........<span class="titleText">${name}</span> <a target="_blank" href="detail?fid=$%7bid%7d" class="titleLink">Detail</a>.......