#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] "'/>");
}