Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Передача значения из формы в цикле → функции (https://javascript.ru/forum/misc/71081-peredacha-znacheniya-iz-formy-v-cikle-%E2%86%92-funkcii.html)

Romann 25.10.2017 11:30

Передача значения из формы в цикле → функции
 
Доброго времени суток!
Помогите решить задачу... Столкнулся с проблемой, у меня есть цикл который выводит данные из localstorage все хорошо работает, но решил я добавить кнопку добавления/вычитания количества товара в корзине.

Количество из формы передается нормально.
А id из кнопки в функцию постоянно передается один и тот же.
И тут я не пойму в чем проблема...

Вот мой костыльный код :

function showcart() {
var sum2 = 0;
var sum3 = 0;

var foo = localStorage.getItem("foo");
foo = foo ? JSON.parse(foo): {};
for (id in foo) {
 idprice = foo[id][2];
 idfoo = foo[id][3];
 idd = foo[id][0];
 
sum = 0;
for (i = 0; i < idfoo; i++) {
	
	sum += 1;
}
  
 document.write ("<div id='" + idd + "'>" + foo[id][1] + " в количестве : " + sum + " </div> "  );

 
 document.write ('<form action="" method="get" name="myform"> <input id="kol" name="kol" type="number" > <input type="hidden" id="idd2" value="' + idd + '"> <input type="button" value="Отправить" onclick="minus(idd)"> </form>')
 
 sum2 += idfoo;
 sum3 += idprice;
 document.write (idd);
}




	document.write (" <div id='coun'> Всего товаров в корзине : " + sum2 + " шт. На сумму: " + sum3 + " руб. </div>");
 }
 

 
 
 
   function minus(idd) {
  var foo = localStorage.getItem("foo");
  foo = foo ? JSON.parse(foo): {};
  var kol_1 = document.getElementById('kol').value;
   var idd1 = document.getElementById('idd2').value;
  koll = Number(kol_1);
   foo[idd][3] = (foo[idd][3] + koll);
     localStorage.setItem('foo', JSON.stringify(foo));
  
  alert (idd1);
  
   }

ksa 25.10.2017 14:14

Цитата:

Сообщение от Romann
Количество из формы передается нормально.
value="' + idd + '...'

...
А id из кнопки в функцию постоянно передается один и тот же
onclick="minus(idd)"

Разницу улавливаешь?

Romann 25.10.2017 17:09

О боги. Вы гений!
Только все равно не пойму, чем ему не нравился idd...

ksa 26.10.2017 08:54

Цитата:

Сообщение от Romann
Только все равно не пойму, чем ему не нравился idd...

На момент вызова у него некое последнее значение и все обработчики используют именно его. Т.е. то, что сейчас хранится в той переменной.


Часовой пояс GMT +3, время: 19:09.