全社向けプログラミング講座

3回目

Webページを動的に動かす

Webページを動的に動かす

→DOMの操作について学びます

アジェンダ

  • DOM
  • イベント
  • タイマー

DOM

Document Object Modelといいます。

HTML文書は、タグ(要素)でツリー状(階層構造)になっています。この各要素を指定して、javascriptから操作することができます。

DOM操作サンプル

id属性がtargetの要素を取得して内容を書き換える

<html>
    <body>
        <div id="target">目標の文字列</div>

        <script type="text/javascript">
             var ele = document.getElementById("target");    

             // div要素の中身(ここでは『目標の文字列』)に文字追加
             ele.innerHTML += "の後ろに追加";
        </script>
    </body>
</html>

DOM操作サンプル

id属性がない要素はタグ名で取得すればよい。

<html>
    <body>
        <div>1つめのdiv要素</div>
        <div>2つめのdiv要素</div>
        <script>
            // div要素すべてを取得
            var ele = document.getElementsByTagName("div");
            // div要素の中身に文字追加
            for (var i = 0; i < ele.length; i++) {
                ele[i].innerHTML += "こんにちは";
            }
        </script>
    </body>
</html>

イベント

イベントを利用してインタラクティブにWebページを

操作します。

イベントの例

 ・Webページが読み込まれた直後(onLoad)

 ・ボタンがクリックされた時(onClick)

 ・リンクや画像の上にマウスが乗った時

      (onMouseOver)

<html>
    <body>
        <div id="target" onClick="countStart();">
	    ここをクリック
	</div>
        <script type="text/javascript">
            var count = 1;
            function countStart() {
                // 『<div id="target">』がクリックされた時に実行
                var ele = document.getElementById("target");
                ele.innerHTML = count + "回クリック";
                count++;
            }
        </script>
    </body>
</html>

イベント

タイマー

タイマーイベントを利用して、一定時間後、または数秒間隔で繰り返し処理を実行することができます。

// タイマー設定
// msec後に1回処理を実行する
var timerId = setTimeout(処理, <msec>);
// タイマー解除
clearTimeout(timerId);
 
// タイマー設定
// msec間隔で処理を実行する
var timerId = setInterval(処理, <msec>);
// タイマー解除
clearInterval(timerId);

タイマー

ボタンを押してから3秒後に「こんにちは」と

表示します。

<html>
    <body>
        <input type="button" value="押して" onclick="exec_timeout();">
        <script type="text/javascript">
            function execute() {
                alert("こんにちは");
            }
            function exec_timeout() {
                setTimeout("execute();", 3000);
            }
        </script>
    </body>
</html>

課題

①htmlのdiv要素に、自分の名前を10個表示してください。

 1秒ごとに表示し、最後に「complete!!」のメッセージを

 表示して終了してください。

<html>
    <head>
    </head>
    <body>
        <div id="output"></div>
    </body>
</html>
<html>
<head>
    <script>
    var timerId;
    function disp{
	var id = document.getElementById("output");
        id.innerHTML += "名前<br>";
	10回を超えたら
	    clearTimeout(timerId);	
	    id.innerHTML += "complete!!";
	それ以外
            timerId = setTimeout("disp()",1000);
    }
    </script>
</head>
<body onload="disp()">
    <div id="output"></div>
</body>
</html>

①htmlのdiv要素に、自分の名前を10個表示してください。

 1秒ごとに表示し、最後に「complete!!」のメッセージを

 表示して終了してください。

<html>
<head>
    <script>
    var name = "名前<br>";
    var message = "complete!!";
    var count = 1;
    var timerId;
    function disp(){
	var id = document.getElementById("output");
        id.innerHTML += name;
	count++;
	if(count > 10){
	    clearTimeout(timerId);	
	    id.innerHTML += message;
	} else {
            timerId = setTimeout("disp()",1000)
        }
    }
    </script>
</head>
<body onload="disp()">
    <div id="output"></div>
</body>
</html>

回答例

まとめ

  • DOM
  • イベント
  • タイマー

1回目

  • Webページ(html)
  • ヘッダ部分に書いて動かす
  • jsファイルを呼び出して動かす
  • 変数
  • 演算子

2回目

  • if文
  • while文
  • for文
  • 関数
  • スコープ(グローバルとローカル)

研修全体まとめ

3回目

  • DOM
  • イベント
  • タイマー