質問: ''; } } } ``` クリックして中身を確認してみたのですが、 クリックする度に、**consoleに「4」が何度も表示されます。** 処理的には... > > 1. attack_okに1が代入されている > > 2. attack_okに3が加算される > > 3. 1.に戻って繰り返されている > > > だと思うのですが、この考え方が間違っているのでしょうか... いろいろと調べてみたのですが、検討がついていません...。 ご存じの方がおられましたら、ご教授いただけましたら幸いです。 どうぞよろしくお願いいたします。
回答: `if(attack_ok == 1){` の分岐はかならず `true` になるため不要です。 ``` // 発火ボタンの取得 var btn = document.getElementById( 'trigAttack' ); // attack_ok:1 ボタン押せる // attack_ok:0 ボタン押せない var attack_ok = 1; btn.onclick = Fight; var attack_count = 0; // テスト用 function Fight() { if ( attack_ok === 1 ) { attack_ok = 0; } else { return; } console.log( 'attack', ++attack_count ); // テスト用 // 処理 setTimeout( function() { attack_ok = 1; }, 5000 ); // 5000ミリ秒(=5秒) } ``` **動くサンプル:** 【JavaScriptでsetTimeoutを使う方法【初心者向け】 | TechAcademyマガジン】 【window.setTimeout - Web API インターフェイス | MDN】