前提・実現したいこと
3つの灰色のボックスを用意しました。ボタンを押すと
赤 灰色 灰色
↓
灰色 黄色 灰色
↓
灰色 灰色 緑
というように時間差で色を変えたいと考えsetTimeoutを使ってプログラムを書きました。
発生している問題・エラーメッセージ
現時点ではエラーが出ていませんが、時間差の設定を1つ変えるとそのほかの時間設定も全て変えなくてはならないです。1500ms、3000ms、4500msで処理するのでははなく、1500msで処理したら次、1500msで処理したら次
、1500msで処理するという風にもっと効率よく書く方法はありますでしょうか?お願い致します。
html
1```<!DOCTYPE html> 2<html lang="java"> 3 <head> 4 <meta charset="utf-8"> 5 <link rel="stylesheet" href="css/styles.css"> 6 </head> 7 <body> 8 <div id="body"> 9 <div id="red"></div> 10 <div id="yellow"></div> 11 <div id="green"></div> 12 </div> 13 14 <div id="btn">押してください</div> 15 16 <div id="reload">リセットボタン</div> 17 18 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 19 <script src="js/main.js"></script> 20 </body> 21</html> 22
css
1body { 2 display: flex; 3 flex-wrap: wrap; 4} 5#red, 6#yellow, 7#green { 8 width: 200px; 9 height: 200px; 10 background: grey; 11 line-height: 200px; 12 user-select: none; 13 float: left; 14 margin: 10px; 15} 16 17#btn { 18 width: 150px; 19 height: 150px; 20 line-height: 150px; 21 text-align: center; 22 font-weight: bold; 23 border-radius: 50%; 24 background: red; 25 color: white; 26 cursor: pointer; 27 margin: 250px auto 0; 28 user-select: none; 29} 30 31#reload { 32 font-size: 18px; 33 font-weight: bold; 34 width: 150px; 35 height: 150px; 36 background: black; 37 border-radius: 50%; 38 text-align: center; 39 line-height: 150px; 40 margin: 250px auto 0; 41 color: red; 42 cursor: pointer; 43 user-select: none; 44} 45
javascript
1$(function(){ 2 const myDefer = $.Deferred(); 3 4 $('#btn').click(function(){ 5 myDefer.resolve(); 6 }); 7 $('#btn').dblclick(function(){ 8 myDefer.reject(); 9 }); 10 11 const myPromise = myDefer.promise(); 12 13 myPromise.then( 14 function(){ 15 $('#red').css('background', 'red'); 16 } 17 ).then( 18 function(){ 19 setTimeout(function(){ 20 $('#yellow').css('background', '#FFFF00'); 21 $('#red').css('background', ''); 22 },1500); 23 } 24 ).then( 25 function(){ 26 setTimeout(function(){ 27 $('#green').css('background', 'green'); 28 $('#yellow').css('background', ''); 29 },3000); 30 } 31 ).then( 32 function(){ 33 setTimeout(function(){ 34 $('#green').css('background', ''); 35 },4500); 36 } 37 ); 38 $('#reload').click(function() { 39 location.reload(); 40 }); 41}); 42
インデントが全くないので書きづらい読みづらい感じになってます。
実際のコードにインデントつけられた上で質問コードも更新していただけますか?
Web上でコードフォーマットを行えるサイトもありますが、できればフォーマット機能のあるエディターを利用してください。
ご指摘ありがとうございます。
現在、出先のため戻り次第修正致します。
一応ですが、エディターはAtomを利用しています。
mts 10806さん
今、出先から戻り直そうと思ったのですが、コードにインデントがついた状態でコピーして貼り付けてもteratailではインデントが全くない状態で表示されてしまいます。どのようにすればインデントがついた状態で表示できるのでしょうか?
コードブロック内ならそのまま表示されるので問題はないとは思いますが念のため冒頭を
```html
のように各言語名を入れてみてください。
各言語名を入れてみたのですがインデントがつきません。。。
んーおかしいですね。
いままで質問でも回答でもできてるはずなので。
直接編集で半角スペースはどうでしょう?
直接半角スペース入れてみても、プレビューで確認するとインデントがつきません。
んー私の方では質問でも回答でもできてるのでなんとも言えないですね
色々と改善方法を考えてくださりありがとうございました!
もう少し原因を考えてみます!
回答2件
あなたの回答
tips
プレビュー