js循环打印(<{$goodsname."+i+"}>)输出空值?

#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