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

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

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

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

Q&A

解決済

2回答

1152閲覧

【javascript】10回まではリロードできるが11回目のリロードができないボタン

tajix_japan

総合スコア132

JavaScript

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

0グッド

0クリップ

投稿2021/04/26 21:11

下記のように10回押すと消えるボタン および ボタンを押すとリロードするボタンがあります。

javascript

1 2 3<script type ="text/JavaScript"> 4var countDownValue = 10; 5function countDown(){ 6 //カウンタから 1 を減算 7 countDownValue--; 8 console.log(countDownValue); 9 if (countDownValue <= 0) { 10//alert('10回越えた'); 11 document.getElementById("countd").setAttribute("disabled", true); 12 document.getElementById("countd").style.color = "White"; 13 } 14 return result; 15} 16</script> 17<input type ="button" id="countd" value="10回押すと消えるボタン" onclick ="countDown();"> 18<input type="button" id="reload" value="このページを再読込" onclick="window.location.reload();" /> 19 20

やりたいこと

10回押すと消えるボタン上で同時にリロードもしたい。
=10回まではリロードできるが11回目のリロードができないボタンを作りたいです。

下記の4つを試しましたがうまくいきません。

<input type ="button" id="countd" value="10回押すと消えるボタン" onclick ="countDown();window.location.reload();"> <input type ="button" id="countd" value="10回押すと消えるボタン" onclick ="countDown(),window.location.reload();"> <input type ="button" id="countd" value="10回押すと消えるボタン" onclick ="window.location.reload();countDown();"> <input type ="button" id="countd" value="10回押すと消えるボタン" onclick ="window.location.reload(),countDown();">

いずれも最初の処理をするだけで2つ目の処理が出来ません。

次に「2つのボタンを同時に押すボタン」を作ってみました。

javascript

1<script type ="text/JavaScript"> 2var countDownValue = 10; 3function countDown(){ 4 //カウンタから 1 を減算 5 countDownValue--; 6 console.log(countDownValue); 7 if (countDownValue <= 0) { 8//alert('10回越えた'); 9 document.getElementById("countd").setAttribute("disabled", true); 10 document.getElementById("countd").style.color = "White"; 11 } 12 return result; 13} 14</script> 15<input type ="button" id="countd" value="10回押すと消えるボタン" onclick ="countDown();"> 16<input type="button" id="reload" value="このページを再読込" onclick="window.location.reload();" /> 17 18 19<input type="button" id="countreload" value="2つのボタンを同時に押すボタン" onclick="test1(event)"> 20<script> 21function test1(e){ 22 console.log(e.target); 23 document.getElementById( "countd" ).click(); 24 document.getElementById( "reload" ).click(); 25 console.log(e.type); //click 26} 27</script> 28 29

上記だと、2つのボタンを同時に押すボタンを押すと
リロードボタンを押したことにはなりますが、10回押すと消えるボタンを押したことにはなりませんでした。
document.getElementById( "countd" ).click();
document.getElementById( "reload" ).click();
を上下変えてもやはりリロードしか認識してもらえません。

お願い
10回まではリロードできるが11回目のリロードができないボタンはどうすればいいかご教示願います。

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

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

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

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

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

guest

回答2

0

ブラウザをリロードした場合、JavaScriptの変数はすべてリセットされます。

リロードを越えて状態を保持したい場合、Cookie、localStoragesessionStorageといった仕掛けを使う必要があります。

投稿2021/04/26 23:19

maisumakun

総合スコア145183

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

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

tajix_japan

2021/04/27 01:12

ありがとうございます。 当方のものを改造し、ローカルストレージに数値を置くことにより 下記で目的のものを作ることが出来ました。(冗長です) 一方でyambejpさんが同じくローカルストレージを使ってとても短いコードで 同じ目的を達成したものを作っていただきました。 ご指導有難うございます。 <input type="button" id="countreload" value="ローカルストレージに10を与える" onclick="start10(event)"> <script type ="text/JavaScript"> function start10(e){ var startValue = 10; localStorage.setItem('countDownValueset', ''+startValue+''); } </script> <script type ="text/JavaScript"> function countDown(){ //カウンタから 1 を減算 var countDownValueset_get = localStorage.getItem("countDownValueset"); var countDownValue = countDownValueset_get; countDownValue--; console.log(countDownValue); var countDownValue00=countDownValue; localStorage.setItem('countDownValueset', ''+countDownValue00+''); var countDownValueset_get = localStorage.getItem("countDownValueset"); if (countDownValue <= 0) { document.getElementById("reload").setAttribute("disabled", true); document.getElementById("reload").style.color = "White"; document.getElementById("countd").setAttribute("disabled", true); document.getElementById("countd").style.color = "White"; } return result; } </script> <input type ="button" id="countd" value="カウントダウンします" name ="bt1" onclick ="countDown();"> <input type="button" id="reload" value="このページを再読込します" onclick="window.location.reload();" /> <input type="button" id="countreload" value="2つを同時読み込み" onclick="test1(event)"> <script> function test1(e){ console.log(e.target); //<input type="button" value="ボタン1" onclick="test1(event)"> //alert('10回越えた'); document.getElementById( "countd" ).click(); document.getElementById( "reload" ).click(); console.log(e.type); //click } </script>
guest

0

ベストアンサー

javascript

1<script> 2const countDownValue = 3; 3window.addEventListener('pageshow',()=>{ 4 var flg=window.performance.navigation.type; 5 if(flg==0) localStorage.count=0; 6 if(flg==1) localStorage.count++; 7 if(localStorage.count>=countDownValue){ 8 document.querySelector("#countd").disabled=true; 9 } 10}); 11</script> 12<input type ="button" id="countd" value="再読込/3回押すと消えるボタン" onclick="window.location.reload();">

投稿2021/04/27 00:19

yambejp

総合スコア114784

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

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

yambejp

2021/04/27 00:20

ただしボタンが消えたからと言って、リロードができないわけではありません
tajix_japan

2021/04/27 01:07

有難うございます。 私もローカルストレージを使って作ってみたのですが、お話にならないくらい冗長なものでした。 こんなに短く作っていただき感謝です。 有難うございました! >ただしボタンが消えたからと言って、リロードができないわけではありません はい。使用場所は「スマートフォンアプリ」のフレームページ内にある別ページのリロードという形で使用します。 index.html (フレームページ) (リロードボタン付き)   ーinflamepage.html (内容ページ) (リロードボタンによりajaxを用い変化させる) リロードボタンはフレームページの親ページ、変化するのはインラインフレーム内のページです。 アプリ使用において大元のフレームページからの遷移はありませんので、ブラウザ上のリロードボタンでのリロード、バックページによるリロード、いずれもできないと考えています。 もし、私の考えが甘い、または注意点などございましたらご教示いただけますと幸いです。 よろしくお願いいたします。
yambejp

2021/04/27 01:16

スマホでインラインフレームの再読み込みができるかどうか、ということでしょうか? ブラウザの仕様なのでなんとも言えないですね。
tajix_japan

2021/04/27 01:37

ご丁寧に、ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問