javascript初級勉強中です。
以下のコードを実行すると(1)小数点第2の動きがおかしい。
(2)一度リセットボタンを押さないとタイマーが動かない。
という2点の不具合が出ます。
どうすれば解決するでしょうか?
<!DOCTYPE HTML>
<head>
<meta charset="utf-8">
<title>ストップウォッチ</title>
</head>
<body>
<h1>ストップウオッチ</h1>
<div id="sec" style="font-size:128px">0.00</div>
<input type="button" value="Start!" onclick="run();">
<input type="button" value="Stop!" onclick="stop();">
<input type="button" value="Reset!" onclick="reset();">
<script>
var statTime,
stopTime,
running = false,
timerId;
function run() {
if (running)return;
running = true;
if (stopTime) {
startTime = startTime + (new Date()).getTime() - stopTime;
}
if (! startTime) {
startTime = (new Date()).getTime();
}
timer(); //タイマー処理回していく
}
function timer() {
document.getElementById('sec').innerHTML = (((new Date()).getTime()- startTime)/1000). toFixed(2);
timerId =setTimeout(function() { timer(); //このタイマー自身を回していく
}, 100);
}
function stop() {
if (!running) return false;
running = false;
clearTimeout(timerId); //timerIdを渡して止める
stopTime = (new Date()).getTime();
}
function reset() {
if (running) return;
startTime = undefined;
document.getElementById('sec').innerHTML = '0.00';
}
</script>
</body>
</html>
No.1ベストアンサー
- 回答日時:
こんにちは。
>(1)小数点第2の動きがおかしい。
少数2位(=1/100秒)を表示するのに、計算の頻度を100msec(=1/10秒)で行っているので、第2位の数値は成ゆきになります。
最小単位と同等(できれば半分)くらいの頻度で計算を行いたいところですが、5msecでは負荷が多すぎるかもしれませんね。
実際の表示はほとんど読み取れないので、10msecくらいがいいところでしょうか。
(setTimeoutやsetIntervalの時間間隔は必ずしも正確ではありません)
>(2)一度リセットボタンを押さないとタイマーが動かない。
ところどころで変数などを表示させてチェックするか、ブラウザ組み込みのデバッグツールを利用なさると良いと思います。
var statTime, ⇒ var startTime,
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript コードレビューをお願いします。 1 2022/07/16 05:38
- JavaScript プログラムがうまく動きませんレビューお願いします 1 2022/07/10 05:08
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript HTMLでJavaScriptを使ってパスワードの強化判定のプログラムを作成しています。 一通り作っ 2 2022/10/19 01:41
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
HTML:Tableタグに対し、JavaScr...
-
フォーカス移動のタイミング
-
innerHTML実行後のイベント
-
リンクボタンからインラインフ...
-
javascript の 命令文の記述で...
-
[初心者]javascriptのfor文でな...
-
Click回数を数え、規定された回...
-
javascript 特定のタグのidの存...
-
日本語入力の禁止
-
jQueryのload()を使用して外部...
-
google apps scriptの終了のさせ方
-
C#OpenCv V4にのエラーに関する...
-
idを使わずにonclickで自身の要...
-
Linux バイナリ実行できない "...
-
JavaScript window.openで開く...
-
Javaで避けるゲームを作ってい...
-
クリックすると上に開くアコー...
-
【JavaScript】数当てゲームを...
-
C#で、ContextMenuStripに動的...
-
URLの一部をコピーできるブック...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<a>タグのテキストを取得
-
ActiveXobjectが作成できない
-
onchangeイベントを使ってspan...
-
HTML:Tableタグに対し、JavaScr...
-
任意の座標をクリックさせるには
-
モーダルダイアログウィンドウ...
-
innerHTML実行後のイベント
-
Click回数を数え、規定された回...
-
javascript 特定のタグのidの存...
-
[初心者]javascriptのfor文でな...
-
【Tabキー】特定の範囲内だけで...
-
javascriptでスロットゲームを...
-
JavaScriptとcookieを利用して...
-
日本語入力の禁止
-
javascriptで、表示されている...
-
javascriptで編集可能不可能の...
-
画像の一部を表示
-
DIV内のDIV要素を移動する。
-
javascript の 命令文の記述で...
-
重複しないくじの作り方がわか...
おすすめ情報