Javascript不会将我的计数器变量视为数字

时间:2011-11-04 11:13:21

标签: javascript jquery count integer

我正在尝试使用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++)

但这只会搞砸循环

3 个答案:

答案 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]+"'/>");
}