smarty模板中,js中怎么嵌套foreach或section循环?

WBOY
풀어 주다: 2016-06-23 13:50:48
원래의
1198명이 탐색했습니다.

这是静态页。

          <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>
로그인 후 복사


用smarty循环,实现这样
{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来封装,将值传到模板即可;要么通过js函数来封装,将值传到模板,确定是否执行此函数。

可以在php里面用json_encode 转化为json后再传给smarty , js 解析json输出就简单多了。


大哥,没用过json_encode,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>
로그인 후 복사

我照着你的例子试着改了改,想在能正确输出我要想的格式了,但它是直接在网页上输出了数据。js不能读取,请问应该怎么写呢?

将document.write 去掉

将document.write 去掉



for(var i=0; i }

这么写,但是还还是没有效果啊!

你究竟要达到什么目的?

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} -->
로그인 후 복사

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿