jnobuyukiのブログ

研究していて困ったことやその解決に関するメモ。同じように困ったあなたのために。twitter ID: @j_nobuyuki

キー押しによる時間の取得

今回は、キーボードを押したときに時間を取得する方法を紹介します。

キーボード押しの判定

キーボードが押されたときに、何かイベントとなる関数を実行するにはdocumentのonkeydownというパラメータを利用します。

document.onkeydown = function(presskey) {
    var pressedkey = presskey.keyCode;
}

pressedkayの値代入の位置は、キーさえ押されればなんでもいいことになってしまうので、あらかじめ反応するキーを決めておいたほうが実用的です。

時間の取得

時間の取得はDate()という関数を使います。ただし、この関数の戻り値は時刻表示なので、ミリ秒単位に変換するためにgetTime()という関数も使います。

    var startTime = new Date();
    var startTimeinMS = startTime.getTime();

これを組み合わせると次のような簡易ストップウォッチができます。

補足:setIntervalは使える?

JavaScriptのタイマーの一つにsetInterval()という関数があります。引数は(実行する関数名, 関数実行の時間間隔)です。今回の投稿に当たり、setIntervalを利用したタイマーも検討しました。その結果、上記のDate()に比べて値が小さくなることに気づきました。どうやらsetIntervalは、そこに書かれた関数を、その前の回の実行完了を待たずに起動してしまうため、出力結果を見る暇がないという欠点があります*1。私のマシンスペックでは、setIntervalの間隔を20ミリ秒程度にすると計算の精度が上がりました。

*1:しかも、ブラウザごとにsetIntervalにどの程度の時間間隔が最低でも必要かが違うそうです。こちらの方がまとめていますので、詳しくはこちらをご覧ください。 http://d.hatena.ne.jp/sandai/20100513/p1