質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

0回答

472閲覧

javaScript カートの中が複数個になるとonclickが動かない

kiichan

総合スコア6

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2018/03/13 13:08

編集2018/03/13 15:38

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}

初心者でして、他にどう調べてよいか悩み質問致しました。
ヒントを頂けたらとても幸いです。
宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/03/13 23:52

とりま、ループしたときに同じID(HTML attribute)が複数存在する状況をなおそう、話はそれからかな
kiichan

2018/03/14 02:36 編集

解答ありがとうございます。 </tr><tr th:each="cart:${session.cart}"> <td th:text="${cart.name}"> </td> <td th:id="${cart.id}" th:text="${cart.count}" ></td> *********↑idを修正*************** <td> <input type="button" value="個数-1" onclick="subtractNum(this.${cart.id});"/> <input type="button" value="個数+1" onclick="addNum(this.${cart.id});"/> ******************↑引数の入れ方が間違っているのか <input type="hidden" th:value="${cart.stock}" id="c1"/> </td> <td> <form method="post" th:action="@{/cart/delete/}+${cart.id}"> このようにidがループの際にかぶらないようにしましたが、this.${cart.id}と引数の書き方は正しいでしょうか?ページのソースを表示するとidはループ時にかぶらないようになりました。しょうがない質問すみません
kiichan

2018/03/14 11:13

解決できました。アドバイスありがとうございました。
kei344

2018/03/18 18:18

まだ質問が「受付中」になっていますが、どのように解決したのかを回答文に書き、「解決済」にされてはいかがでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問