js循环打印(<{$goodsname."+i+"}>)输出空值?
发布于:2022-01-17 09:50:54
#1 小双
js循环里面打印(<{$goodsname."+i+"}>)输出空值?<{$goodsname.0}>直接写会显示,而放js循环里面换成"+i+"就是空值是什么原因呢?
js代码:
for(var i=0;i<=5;i++){
alert("<{$goodsname."+i+"}>");
}
php里dump数组$goodsname:
Array
(
[0] => 名称0
[1] => 名称1
[2] => 名称2
[3] => 名称3
[4] => 名称4
)
2010-10-12 11:17:10
#2 小双
其实,把$goodsname在js里面重新定义成数组var goodsname=new Array(<{$goodsname.0}>,<{$goodsname.1}>,......)
就可以了实现上面效果,可是我想做成可以自己控制数组个数的,就是php里读取的数组个数一直都等于js里面循环的最大值,这样就可以在修改数据库里的数据时,js也可以在不修改的情况下正确运行。
jake,有什么好的建议呢?
2010-10-12 11:55:40
#3 jake
前面你把PHP的数组和JS的数组混在一起,所以不行。
然后
var goodsname=new Array(<{$goodsname.0}>,<{$goodsname.1}>,......)
这样就对了。当然,数据最好是循环读取
var goodsname=new Array(<{foreach from=$goodsname item=goods name=mygoods}><{$goods}>
<{if !$smarty.foreach.mygoods.last}>,<{/if}>
<{/foreach}>);
后面的IF是用于生成“,”的,而最后的一项是不需要“,”的。
2010-10-12 12:58:09
#4 小双
呵呵,感谢老大,搞定,不过小改动了一下:
var goodsname=new Array('<{foreach from=$goodsname item=goods name=mygoods}><{$goods}>
<{if !$smarty.foreach.mygoods.last}>','<{/if}>
<{/foreach}>');
2010-10-12 13:36:19