我正在尝试使用jQuery生成表单元素以发送到Paypal表单,我在循环数组时遇到问题。
购物车中的商品列表保存在一个数组中,Javascript循环遍历数组,添加表单字段和值,如下所示
for (j=0;j<(itemArray.length);j++)
$('#createFields').append("<input type='hidden' name='item_name_"+ j +"' value='"+itemArray[j]+"'/>");
这很有效,除了我需要item_name_以1开头,而不是0.
“容易”我想
for (j=0;j<(itemArray.length);j++)
$('#createFields').append("<input type='hidden' name='item_name_"+ j+1 +"' value='"+itemArray[j]+"'/>");
应该有效,但不是,这给了01。
所以我认为它不是将“j”视为整数
所以我试过
(j*1)+1
那仍然给了我01
parseInt(j)+1
还给我01!
如何从此计数器变量获得“0 + 1 = 1”?
我无法理解为什么会出现这个问题,我之前已经多次遇到过与上述方法相同的问题!
我也试过
for (j=1;j<( (itemArray.length+1) );j++)
但这只会搞砸循环
答案 0 :(得分:7)
只需将表达式分组:
"..." + (j+1) + "..."
这将为j + 1
提供更高的优先级,以便先进行评估然后连接。
否则,将首先与字符串串联,即,首先将j
与前面的字符串连接,然后将结果字符串与1
连接(从左到右评估)。如果没有分组,表达式将隐式评估为:
((("..." + j) + 1) + "...")
答案 1 :(得分:1)
试
for (j=0;j<itemArray.length;j++)
{
$('#createFields').append("<input type='hidden' name='item_name_"+ (j+1)
+"' value='value='"+itemArray[j]+"'/>");
}
答案 2 :(得分:1)
另一种解决方案:
for (j=1;j<=itemArray.length;j++)
{
$('#createFields').append("<input type='hidden' name='item_name_"+ j +"'value='value='"+itemArray[j-1]+"'/>");
}