event_key.html 3.04 KB
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<title>イベントサンプル</title>

<style type="text/css">
body {
    font-family: Arial;
}
#disparea {
    width: 150px;
    font-size: 40px;
    background-color: #CCCCCC;
    border: #4C4C4C solid 1px;
    text-align: center;
    padding: 20px 20px 20px 20px;
    margin: 20px 20px 20px 20px;
}
#result {
    width: 150px;
    border: #4C4C4C solid 1px;
    text-align: center;
    padding: 20px 20px 20px 20px;
    margin: 20px 20px 20px 20px;
}
</style>

<script language="javascript" type="text/javascript">

var q_keycode;

// 画面に問題となるアルファベットをランダムに表示し、キー入力を受け付ける。
// 入力されたキーが正解か不正解かを判定し、結果を表示する。
function playGame(e) {
    // 押されたキーのキーコードを取得する
    var in_keycode = e.keyCode;
    // 始めて画面が表示されたとき、もしくはエンターキーが押されたら、
    // 問題となるアルファベットをランダムに抽出し、画面に表示する。
    // エンターキー以外のキーが押されたら、正解・不正解を判定する。
    if(q_keycode == undefined || in_keycode == 13) {
        // キーコードをランダムに抽出
        q_keycode = Math.floor(Math.random() * 26) + 65;
        // 問題表示領域に、アルファベットを表示
        document.getElementById('disparea').childNodes[0].nodeValue = String.fromCharCode(q_keycode);
        // 結果表示領域をクリア
        document.getElementById('result').childNodes[0].nodeValue = '';
    } else {
        // 結果を判定し、結果表示領域に表示
        if(in_keycode == q_keycode) {
            document.getElementById('result').childNodes[0].nodeValue = '正解';
        } else {
            document.getElementById('result').childNodes[0].nodeValue = '残念';
        }
    }
}

// keydownイベントリスナーをセットする
function setListeners(e) {
    // キーが押されたらplayGame()関数が実行されるようリスナーをセット
    addListener(document, 'keydown', playGame, false);
}

function addListener(elem, eventType, func, cap) {
    if(elem.addEventListener) {
        elem.addEventListener(eventType, func, cap);
    } else if(elem.attachEvent) {
        elem.attachEvent('on' + eventType, func);
    } else {
        alert('ご利用のブラウザーはサポートされていません。');
        return false;
    }
}

// HTMLがロードされた際に、setListeners()関数を実行させる
addListener(window, 'load', setListeners, false);

</script>

</head>

<body>
  <!-- 問題表示領域 -->
  <div>▼ 質問</div>
  <div id="disparea">?</div>
  <!-- 結果表示領域 -->
  <div>▼ 結果</div>
  <div id="result">Press any key.</div>

</body>
</html>