Javascript не обрабатывает мою переменную счетчика как число

#javascript #jquery #count #integer

#javascript #jquery #count #целое число

Вопрос:

Я пытаюсь сгенерировать элементы формы с помощью 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  )
  

но это просто портит цикл

Ответ №1:

Просто сгруппируйте выражение:

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

это даст j 1 более высокий приоритет, чтобы он сначала вычислялся, а затем объединялся.

В противном случае сначала будет выполнена конкатенация со строкой, то есть сначала j объединяется с предыдущей строкой, а затем результирующая строка объединяется с 1 (вычисление слева направо). Без группировки выражение неявно вычисляется как:

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

Комментарии:

1. Аргххх … так просто! Я думал, что перепробовал почти все варианты! Начинал слегка сходить с ума!

Ответ №2:

попробуйте

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

Ответ №3:

Другое решение:

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