请原谅我,因为我之前从未使用过Apache Velocity,但我必须弄清楚这一点!
我正在使用产品的adobe推荐模板,我现在正在添加星级评分系统,如下图所示:
但是,你可以看到我添加的逻辑(在JS中)只是第一次执行。并且显然没有在循环中运行,因为它在Velocity中。
我向社区提出的问题是;我该怎样做才能做到这一点?
我已经尝试了一天现在无济于事,所以非常感谢任何帮助。
请参阅下面的代码! (谢谢!)
[#foreach循环是速度,脚本标签之间的所有内容都是我的附加代码]
<div class="line">
<h2>More for You</h2>
#set($count=1)
#foreach($e in $entities)
#if($e.id != "" && $count < $entities.size() && $count <=18)
<li>
<script type="text/javascript">
var myString = $e.rating;
if (myString >= 5) { myString = 5;}
var myRegexp2 = /\d(?!.*\d)/;
var match2 = myRegexp2.exec(myString);
var starIMG = "<img src='http://kirklands.ugc.bazaarvoice.com/3768-en_us/" + match + "_" + match2 + "/5/rating.gif' alt='' />";
var myRegexp3 = /\d/;
var match = myRegexp3.exec(myString);
function myFunction() {
return(match);
}
</script>
<a class="productBlock" onclick="var s = s_gi(s_account);
s.linkTrackVars='events,eVar21';
s.linkTrackEvents='event16';
s.events='event16';
s.eVar21='';
s.tl(this,'o','Product Detail Cross-Sell');" href="$e.pageUrl?icid=hpFS ">
<img title="$e.name" alt="$e.name" src="$e.thumbnailUrl">
<h3>$e.name</h3>
<div id="starRating"><script>document.getElementById("starRating").innerHTML =
starIMG;</script></div>
<p>$$e.value</p>
</a>
</li>
#set($count = $count + 1)
#end
#end
</ul>
</div>
<div class="scroolBtn btnRight"><span class="btn" id="scrool-forward"></span></div>
</div>
jQuery(function(){
jQuery的( '#双击自动滚屏')。滚动框({
方向:'h',
switchItems:3,
距离:450,
将autoPlay:假
});
jQuery('#scrool-backward')。click(function(){
。jQuery的( '#双击自动滚屏')触发( '向后');
});
jQuery('#scrool-forward')。click(function(){
。jQuery的( '#双击自动滚屏')触发( '前进');
});
});
答案 0 :(得分:0)
我多年没有使用过Velocity模板脚本,但是疯狂猜测是一个逃避问题。您在速度模板中包含的所有内容实际上都是由Velocity引擎运行的,您必须转义$ variable literals。
http://velocity.apache.org/engine/devel/user-guide.html#escapingvalidvtlreferences
编辑不等,你的意思是你想在服务器端运行javascript代码,每个foreach项步骤应该评估javascript代码?