2011-11-04 40 views
1

我試圖用jQuery生成表單元素以發送到PayPal表單,我遇到了循環訪問數組的問題。Javascript並不把我的計數器變量當作數字

項目在購物車的名單已在陣列中舉行的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++) 

但只是螺釘了循環

回答

7

剛組的表達:

"..." + (j+1) + "..." 

這會給j + 1更高的優先級,使其先評估然後連接。

否則,與字符串的連接將首先發生,也就是說,首先將j與前面的字符串連接,然後將結果字符串與1(從左到右評估)連接在一起。不進行分組,表達被隱含評價爲:

((("..." + j) + 1) + "...") 
+0

Arghhhh ......就這麼簡單!我以爲我嘗試過所有的變化!開始有點生氣了! –

1

嘗試

for (j=0;j<itemArray.length;j++) 
{ 
$('#createFields').append("<input type='hidden' name='item_name_"+ (j+1) 
    +"' value='value='"+itemArray[j]+"'/>"); 
} 
1

另一種解決方案:

for (j=1;j<=itemArray.length;j++) 
{ 
    $('#createFields').append("<input type='hidden' name='item_name_"+ j +"'value='value='"+itemArray[j-1]+"'/>"); 
}