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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

JavaScript

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

Q&A

解決済

2回答

2887閲覧

javascript(jQuery)を使って、htmlで減算する人数制限表示を作りたい

ttaison

総合スコア19

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

JavaScript

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

0グッド

0クリップ

投稿2017/05/17 05:21

ただいま以下のような要素で、人数制限をカウント減算するプログラムを作っているのですが、ページロードする度、数字が初期値に戻ってしまい苦戦しています。

<p class="remainder">本日は残り<span id="remainder">15</span>名まで</p> <a id="submitBtn">クリック</a> <script><!-- footer下部に記載 --> var limit = 15; $('#submitBtn').click(function(){ if(limit >= 2){ limit--; document.getElementById('remainder').innerHTML = limit; }; }); </script>

a要素のクリックボタンを押していくと1ずつ数字が減っていき、最終的に1名で止まるようになったのですが、ブラウザをリロードすると数字が変数の初期値に戻ってしまいます。
そのためscript部分を以下のように書き換えましたが、まったく動作してくれません。

<script><!-- footer下部に記載 --> var limit = document.getElementById('remainder'); $('#submitBtn').click(function(){ var limitNum = Number(limit); if(limitNum >= 2){ limitNum - 1; document.getElementById('remainder').innerHTML = limitNum; }; }); </script>

現在の環境はWordpress 4.7.5
jquery 1.12.4
テーマはXeory extension 0.2.1を使用しております。
記法が分からず手探りでやっております。ご指摘いただける部分があればよろしくお願い致します。

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

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

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

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

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

guest

回答2

0

ベストアンサー

リロードする、ということは、HTMLの読み込みを最初からやり直すことになるので、HTML上に保持し続けることはできません

値を保持する方法にはcookieや、secondさんの示されたようにローカルストレージを使う方法などがあります

ただし、ある人のPCのブラウザで変化した値を別の人のPCのブラウザに渡すことはできません

「本日は残り~名まで」という文言から察するに、そのカウントダウン値は不特定多数の人へ知らせることを想定されていますか?
もしそうであるなら、それを実現したい場合はサーバ側で値を受け取ってDBに格納し、ページ表示時にDBから値を読み取ってページに埋め込むような仕組みが必要になります

投稿2017/05/17 06:39

takito

総合スコア3111

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

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

ttaison

2017/05/17 07:36 編集

おっしゃるとおりで、不特定多数のユーザーを想定しています。 そうなるとデータベースも織り交ぜた形で内容を考えていく必要がありそうですね。 もう少しデータ保持について調べてみようかと思います。 ありがとうございます!
guest

0

javascriptの変数やdomの情報はページを離れても保持されるものではありません。

そのため、データベースやユーザーのブラウザに保存するようにしなければなりません。

LocalStorageを使うと、簡単に実装することはできます。

https://developer.mozilla.org/ja/docs/Web/API/Window/localStorage

JavaScript

1localStorage.setItem('counter', limitNum);// 保存 2limitNum = localStorage.getItem('counter');// 取得

こんな感じです。

投稿2017/05/17 06:09

second

総合スコア14

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

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

kei344

2017/05/17 06:34

LocalStorageでは「回数制限」は出来ますが「人数制限」は出来ないと思いますよ。
second

2017/05/17 06:40

確かにそうですね。 または「クリックボタンを押していくと1ずつ数字が減っていき」と書いていることから、それは許容する仕様なのかもしれません。
ttaison

2017/05/17 07:21

こんなものがあったのですね。ありがとうございます。 今回の仕様としては、問い合わせの送信ボタンをイベント発火装置にして、表示される数字の切り替えができれば。と思ったのですが、、、 データの保持を考えるといろいろと複雑になりそうですね 汗
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問