下のプログラムで「結果を表示する」のボタンを押したときに1~2秒ほどローディング画像の表示&フェードアウトするようにしたいのですが、ボタンを押す前からローディング画像が表示されてしまうなど、なかなかうまくいきません。
このプログラムのジャバスクリプトにどうやって記述すればできるようになるのか、教えていただけますでしょうか。
色々調べて、とりあえず下記リンクのサイトなどのやり方を参考に、あれこれやっているのですがローディング画像が思うように表示されないのです。。。
/////////////////////////////////////////////////
参考にしたサイト(2つ)
https://haniwaman.com/loading/?fbclid=IwAR0g5WSlyiEEb-fHzPBHdfqbpcrMUebDUrgKtvZycf6oL1ljkT85zD07hiQ
/////////////////////////////////////////////////
ローディング画像はCSSでつくったので、あとはボタンを押せば、ローディング画像が表示されるように、ジャバスクリプトを記述すれば良いだけだと思うのですが、どういった記述をすれば良いかが分かりません。
<script type="text/javascript"> // ◆◆◆ファンクション名◆◆◆ function keisan() { ////////////////////////////////// この部分にどういったスクリプトを記述すれば良いかが分からない ////////////////////////////////// // ◆◆◆入力された(anser)の定義◆◆◆ var anser1 = (document.querySelector('#anser1').value); var anser2 = (document.querySelector('#anser2').value); // ◆◆◆関数設定◆◆◆ var word1 = 'あいうえお'; var word2 = 'ABCDEF'; // ◆◆◆テーブル設定◆◆◆ var table1 =`<table style="width:300px;"><tbody><tr><td>`; var table2 =`</td></tr><tr><th>`; var table3 =`</th></tr></tbody></table>`; // ◆◆◆結果の表示◆◆◆ document.querySelector('#anserall').innerHTML = table1+word1+anser1+table2+word2+anser2+table3; } </script>// html部分 <form> <input id="anser1" type="number" placeholder="0"> <br> <input id="anser2" type="number" placeholder="0"> <br> <input type="button" value="結果を表示する" onclick="keisan();"> <br> <div id="anserall" style="white-space:pre;"></div> </form> //ジャバスクリプト <script type="text/javascript"> // ◆◆◆ファンクション名◆◆◆ function keisan() { // ◆◆◆入力された(anser)の定義◆◆◆ var anser1 = (document.querySelector('#anser1').value); var anser2 = (document.querySelector('#anser2').value); // ◆◆◆関数設定◆◆◆ var word1 = 'あいうえお'; var word2 = 'ABCDEF'; // ◆◆◆テーブル設定◆◆◆ var table1 =`<table style="width:300px;"><tbody><tr><td>`; var table2 =`</td></tr><tr><th>`; var table3 =`</th></tr></tbody></table>`; // ◆◆◆結果の表示◆◆◆ document.querySelector('#anserall').innerHTML = table1+word1+anser1+table2+word2+anser2+table3; } </script> ========= // CSS ローディング画像 #loading { display: table; width: 100%; height: 100%; position: fixed; top: 0; left: 0; background-color: #fff; opacity: 0.8; } #loading .loadingMsg { display: table-cell; text-align: center; vertical-align: middle; padding-top: 140px; background: url("img/loading.gif") center center no-repeat; }
回答1件
あなたの回答
tips
プレビュー