spring にて買い物カートを作成しています。
カート全件表示のHTML↓
|列1|列2|列3||
|:--|:--:|--:|
|リンゴ|a|-1|+1
上記のようにカートに入れたものが表示されます。
+1ボタンを押すとaが1増え
-1ボタンを押すとaが1減る仕組みです。
1.カートに1個だけの時はカウントが
動きます。
|列1|列2|列3||
|:--|:--:|--:|
|リンゴ|a|-1|+1
2.下記のようにカートに複数追加されると
ボタンがすべて作動しなくなります。
|列1|列2|列3||
|:--|:--:|--:|
|リンゴ|a|-1|+1
|みかん|a|-1|+1
複数だと、id=a1が判別できなくなっているのではと思い、下記のソースコードにてonclick()の引数をa1からsession.cartから取得した${cart.id}を代入して試してみたが駄目でした。
<table> <tr class="column"> <td>商品名</td> <td>個数</td> <td>操作</td> <td></td> </tr> <tr th:each="cart:${session.cart}"> <td th:text="${cart.name}"></td> <td id="a1" th:text="${cart.count}" ></td> <td> <input type="button" value="個数-1" onclick="subtractNum(a1);"/> <input type="button" value="個数+1" onclick="addNum(a1);"/> <input type="hidden" value="30" id="c1"/> </td> <td> <form method="post" th:action="@{/cart/delete/}+${cart.id}"> <input type="submit" value="削除" class="delete"/> </form> </td> </tr> </table> <!-- ページリンク --> <div class="pageLink"> <span> <span>1</span> </span> </div> <form action="" method="post"> <span> <input type="hidden" name="itemId" value="1" /> <input type="hidden" name="orderNum" value="1" id="b1"/> </span> <span> <input type="hidden" name="itemId" value="2" /> <input type="hidden" name="orderNum" value="1" id="b2"/> </span> <input type="submit" value="ご注文のお手続き" /> </form>
jsファイルのコードはこちらです。
1 2function addNum(count) { 3 var num = count.innerText; 4 var name = count.id; 5 var lastNum = name.substr(1); 6 var targetId1 = "b" + lastNum; 7 var targetId2 = "c" + lastNum; 8 var elm1 = document.getElementById(targetId1); 9 var elm2 = document.getElementById(targetId2); 10 var num2 = Number(elm1.value); 11 var num3 = Number(elm2.value); 12 num = Number(num); 13 if (num3 > num) { 14 num++; 15 num2++; 16 } 17 18 count.innerText = num; 19 elm1.value = num2; 20} 21 22function subtractNum(count) { 23 var num = count.innerText; 24 var name = count.id; 25 var lastNum = name.substr(1); 26 var targetId = "b" + lastNum; 27 var elm = document.getElementById(targetId); 28 var num2 = Number(elm.value); 29 num = Number(num); 30 if (num > 1) { 31 num--; 32 num2--; 33 } 34 35 count.innerText = num; 36 elm.value = num2; 37}
初心者でして、他にどう調べてよいか悩み質問致しました。
ヒントを頂けたらとても幸いです。
宜しくお願い致します。
あなたの回答
tips
プレビュー