🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

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

Q&A

解決済

3回答

1061閲覧

JQueryでHTMLの要素を所得して、引き算機能を実装させたい

shuntahyodo

総合スコア14

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

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

0グッド

0クリップ

投稿2019/12/11 08:57

イメージ説明

▷実現したいこと

画像に沿って説明させていただきます。
フローを説明すると右下の「参加決定」ボタンを押すと「残り60名」の部分の60を-1して59にしたいというイメージです。
そして残りの人数が0になるまで繰り返し処理をしたいと考えています。

▷実際にやったこと

html

1<!DOCTYPE html> 2<html lang ="ja"> 3<head> 4 <meta charset = "UTF-8"> 5 <title></title> 6 <link rel="stylesheet" href="style.css"> 7</head> 8<body> 9 <div class="top-banner"> 10 <h1> 11 60名集客まで残り<span id="count">60</span>12 </h1> 13 <form> 14 <input type="submit" value="参加決定" name="submit" id="attend"> 15 </form> 16 </div> 17 <script src= "jquery-3.4.1.min.js"></script> 18 <script src="main.js"></script> 19</body> 20</html>

送信ボタンにid属性”attend”をつけて、クリックされた時、イベントを発生させる処理を別ファイルでやっています。

js

1$(function(){ 2 3 $(document).on("click","#attend",function(){ 4 5 6 }); 7 8 });

この先の処理で停滞している状況です。
具体的なご解答例をいただけると幸いです。

よろしくお願いいたします。

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

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

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

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

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

H40831

2019/12/11 09:01

ブラウザ上のJavaScriptだけではオンラインでデータ(人数)を共有することはできませんが、 今回はオフライン(ローカル)で、仰る動作を実装できればよいのでしょうか?
azuapricot

2019/12/11 09:03

submitしてるってことはサーバー側で人数管理してるんでしょうか? それならjsで計算というよりは、サーバー側で変動した後の値を画面に再表示するっていう風になるのでは?
shuntahyodo

2019/12/11 09:15

追記、修正の質問ありがとうございます!! 今回は外部と接続する予定はなく、DBとも接続しない想定です。 イベント発生毎(こんかいはサブミット)に数字を引いていく処理をする場合、どのように書くべきなのか分からず質問させて頂いた次第です。 分かりづらく申し訳ございません。
guest

回答3

0

やり方はいろいろあると思うので、あくまで一例です。
また、しばらくjQueryに触れてないので、想定通りの動作にならなかったら教えて下さい。


まず、人数はJavaScriptで管理したいので、jQueryの実行前に

let count = 60;

とデータを持っておきます。
あとはjQuery内で

$('#attend').on("click",function(){ if( count > 0 ){ count-=1; $('#count').text(count); }else{ console.log('満員御礼'); } });

投稿2019/12/11 09:41

編集2019/12/11 09:50
H40831

総合スコア975

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

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

H40831

2019/12/11 10:00 編集

既に終了してた
shuntahyodo

2019/12/11 12:30

ご丁寧に本当にありがとうございます! このやり方も参考にさせて頂きます! ありがとうございます!!
guest

0

通常残り人数はサーバー側のDBなどで管理します。
参加決定を押すたびに、イベント(?)idに対して、ユーザーidを
紐付けていき、最大数までユーザーidを登録していく流れです。
参加決定は、submitしてもajax(fetch)してもどちらでもよいでしょう

sample

html内で完結しているのであればこんな感じ
(60回押すのが面倒なのでとりあえず最初からあと5回にしておきます)

javascript

1<script> 2$(function(){ 3 $('#attend').on('click',function(e){ 4 e.preventDefault(); 5 var count=$('#count').text()-1; 6 if(count<0) count=0; 7 $('#count').text(count); 8 }); 9}); 10</script> 11<div class="top-banner"> 12<h1> 1360名集客まで残り<span id="count">5</span>14</h1> 15<form> 16<input type="submit" value="参加決定" name="submit" id="attend"> 17</form> 18</div>

投稿2019/12/11 09:06

編集2019/12/11 09:40
yambejp

総合スコア116694

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

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

shuntahyodo

2019/12/11 09:28

ご回答ありがとうございます! DBはまだ分からないのでできないのですが、これから勉強する際の参考にさせて頂きます! ありがとうございます!
guest

0

ベストアンサー

以下の処理をクリックイベントの中に記述すればいいです。

  1. id 属性の値が count である要素を取得する。
    1. で取得した要素のテキストの値を取得する。
    1. で取得したテキストの値を数値に変換する(ただし、普通に書けば 4. の工程で暗黙の内に変換してくれるため省略可能)。
    1. の数値をマイナス 1 する。
    1. の数値を文字列に変換する(ただし、6. の工程で暗黙の内に変換してくれるため省略可能)。
    1. で取得した要素のテキストに、5. の数値を設定する。

具体的なやり方は、それぞれ「jQuery 要素 取得」などで検索すれば出てくるので、ご自身で調べてください。

追記

0になるまで繰り返し処理をしたい

を忘れていました。
上記の 3. と 4. の間に、「数値が 0 であれば、終了 (return) する。」という工程を追加してください。

投稿2019/12/11 09:19

編集2019/12/11 09:24
2KOH

総合スコア999

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

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

shuntahyodo

2019/12/11 09:26

ご回答ありがとうございます! テキストや値の部分の取得ができてなかったかもしれないです。 すぐ試してみます! ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問