前提・実現したいこと
javascript,jQuery共に初心者です。
jQueryを使う事で変数を入れなくていいという所だけ理解しています。
Javascriptでは作成出来たので、それを参考にjqueryで書き換えれる部分を書き換えましたが、
スタートボタンとストップボタンが動きません。リセットボタンは動きましたが、押した数秒後'timeUp'が出てきておかしな事になります。
検証ツールでも問題が出てこないので、これ以上どうしたらいいのかわかりません。
改善できる所をアドバイス頂ければ有難いです。
よろしくお願いします。
発生している問題・エラーメッセージ
タイマーのスタート、ストップボタンが動かない。
リセットボタンは動きますが、少しおかしい。
エラーメッセージ
該当のソースコード
jQuery ソースコード <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>タイマー</title> <link rel="stylesheet" href="../JS09/timer.css"> <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script> <script> var counter; var time = 180; function countStart( ){ counter = setInterval(count, 100); toggle($('#start_button').prop('disabled')); } function countStop( ){ clearInterval(counter); toggle($('#stop_button').prop('disabled')); } function countReset( ){ time = 180 clearInterval(counter); toggle(); $('#min').text('03') $('#sec').text('00') $('#timeUp').css('display','none'); $('#timerLavel').css('display','block'); } function toggle(x){ if(x===false){ $('#start_button').prop('disabled',false); $('#stop_button').prop('disabled',true); } else { $('#start_button').prop('disabled',true); $('#stop_button').prop('disabled',false); } } function count( ) { if( time === 0) { $('#timeUp').css('display','block'); $('#timeUp').css('color','red'); $('timerLavel').css('display','none'); clearInterval(counter); } else { time -= 1; $('min').text('time % 60'); $('sec').text('Math.floor(time /60)'); } } var timerLavel = timerLavel; var timeUp = timeUp; $(function(){ $('#start_button').click(countStart); $('#stop_button').click(countStop); $('#reset_button').click(countReset); }); </script> </head> <body> <div class="container"> <h1 class="title">Stop watch</h1> <h1 id="timerLavel"><span id ="min">00</span>:<span id ="sec">00</span></h1> <h1 id="timeUp">TimeUp!</h1> <div class="set"> <button id="start_button">スタート</button> <button id="stop_button">ストップ</button> <button id="reset_button">リセット</button> </div> </div> </body> </html> 機能してるJavascriptのソースコード↓ <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>タイマー</title> <link rel="stylesheet" href="timer.css"> <script> var counter; var time = 180; var start; var stop; function countStart( ){ counter = setInterval(count, 100); toggle(); } function countStop( ){ clearInterval(counter); toggle(); } function countReset( ){ var min= document.getElementById('min'); var sec= document.getElementById('sec'); time = 180 sec.innerHTML = '00'; min.innerHTML = '03'; clearInterval(counter); timeUp.style.display ='none'; timerLavel.style.display='block'; if(start.toggle){ toggle(); } } function toggle(){ if(start.disabled){ start.disabled = false; stop.disabled = true; } else { start.disabled = true; stop.disabled = false; } } function count( ) { var min= document.getElementById('min'); var sec= document.getElementById('sec'); if( time === 0) { timeUp.style.display ='block'; timeUp.style.color ='red'; timerLavel.style.display='none'; clearInterval(counter); } else { time -= 1; sec.innerHTML = time % 60; min.innerHTML = Math.floor(time /60); } } window.onload = function(){ var timerLavel= document.getElementById('timerLavel'); var timeUp= document.getElementById('timeUp'); start = document.getElementById('start_button'); stop = document.getElementById('stop_button'); var reset = document.getElementById('reset_button'); start.addEventListener('click',countStart,false); stop.addEventListener('click',countStop,false); reset.addEventListener('click',countReset,false); } </script> </head> <body> <div class="container"> <h1 class="title">Stop watch</h1> <h1 id="timerLavel"><span id ="min">00</span>:<span id ="sec">00</span></h1> <h1 id="timeUp">TimeUp!</h1> <div class="set"> <button id="start_button">スタート</button> <button id="stop_button">ストップ</button> <button id="reset_button">リセット</button> </div> </div> </body> </html> ### 試したこと javascriptの変数に変える部分はjQueryに書き換えて、検証ツールで問題がでる部分は修正しました。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー