Home > Article > Backend Development > smarty模板中,js中怎么嵌套foreach或section循环?
这是静态页。
<script> var box =new PPTBox(); box.width = 1250; //宽度 box.height = 490;//高度 box.autoplayer = 3;//自动播放间隔时间 //box.add({"url":"图片地址","title":"悬浮标题","href":"链接地址"}) box.add({"url":"images/tu1.jpg","title":"悬浮提示标题1"}); box.add({"url":"images/tu2.jpg","title":"悬浮提示标题2"}); box.add({"url":"images/tu3.jpg","title":"悬浮提示标题3"}); box.add({"url":"images/tu4.jpg","title":"悬浮提示标题4"}); box.show(); </script>
{literal} <script> var box =new PPTBox(); box.width = 1250; //宽度 box.height = 490;//高度 box.autoplayer = 3;//自动播放间隔时间 //box.add({"url":"图片地址","title":"悬浮标题","href":"链接地址"}) {foreach item=lop from=$tuan } box.add({"url":"./upload/admin/{$lop.image}","title":"{$lop.title}"}); {/foreach} box.show(); </script>
就和在网页上的一样,最好改一下定界符“{
可以在php里面用json_encode 转化为json后再传给smarty , js 解析json输出就简单多了。
{foreach item=lop from=$tuan }
box.add({"url":"./upload/admin/{$lop.image}","title":"{$lop.title}"});
{/foreach}
这个循环可以通过php来封装,将值传到模板即可。
{foreach item=lop from=$tuan }
box.add({"url":"./upload/admin/{$lop.image}","title":"{$lop.title}"});
{/foreach}
这个循环可以通过php来封装,将值传到模板即可。
可以在php里面用json_encode 转化为json后再传给smarty , js 解析json输出就简单多了。
例子,自行改下就行。
var json='[{"id":12,"name":"aa"},{"id":13,"name":"bb"}]'; // json对象来自php的json_encode var obj=eval(json) for(var i=0; i<obj.length; i++) { document.write(obj[i].id+" " + obj[i].name); }
三楼的方法我感觉可行
例子,自行改下就行。
var json='[{"id":12,"name":"aa"},{"id":13,"name":"bb"}]'; // json对象来自php的json_encode var obj=eval(json) for(var i=0; i<obj.length; i++) { document.write(obj[i].id+" " + obj[i].name); }
<script> var box =new PPTBox(); var json='[{"url":"images/tu1.jpg","title":"悬浮提示标题1"},{"url":"images/tu2.jpg","title":"悬浮提示标题1"},{"url":"images/tu3.jpg","title":"悬浮提示标题1"},{"url":"images/tu4.jpg","title":"悬浮提示标题1"}]'; var obj=eval(json) box.width = 1250; //宽度 box.height = 490;//高度 box.autoplayer = 3;//自动播放间隔时间 //box.add({"url":"图片地址","title":"悬浮标题","href":"链接地址"}) for(var i=0; i<obj.length; i++){ document.write('box.add({"url":'+'"'+obj[i].url+'"'+","+'"title":'+'"'+obj[i].title+'"'+"});"); } box.show(); </script>
将document.write 去掉
将document.write 去掉
你究竟要达到什么目的?
for(var i=0; i<obj.length; i++) { box.add({"url":'"'+obj[i].url+'"',"title":'"'+obj[i].title+'"'}); }
我遇到了跟楼主一样的问题。。。我使用了一个笨办法。就是用{literal}{/literal}挨个把变量和js代码分隔开。
完整代码如下
<!-- {if $recommend_product} --> <script type="text/javascript" src="../images/pptBox.js"></script> <script> {literal} var box =new PPTBox(); box.width = 223; //宽度 box.height = 123;//高度 box.autoplayer = 3;//自动播放间隔时间 {/literal} <!-- {foreach from=$recommend_product name=recommend_product item=product} --> {literal} box.add({"url":"{/literal}{$product.thumb}{literal}","href":"{/literal}{$product.url}{literal}","title":"{/literal}{$product.name}{literal}"});{/literal} <!-- {/foreach} --> {literal} box.show(); {/literal} </script> <!-- {/if} -->