| 232 | |
| 233 | === 読み込みと同時に実行されるプログラム === |
| 234 | |
| 235 | <script> タグ内に記述したプログラムは、HTML ファイルの読み込み中に順次実行されます。その様子を、以下のサンプルプログラムで確認してみましょう。このプログラムは、ブラウザ上で HTML ファイルを読み込んだときの日時を表示するものです。 |
| 236 | |
| 237 | {{{ |
| 238 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> |
| 239 | <html> |
| 240 | |
| 241 | <head> |
| 242 | <meta http-equiv="content-type" content="text/html; charset=UTF-8"> |
| 243 | <meta http-equiv="content-script-type" content="text/javascript"> |
| 244 | <title>run in load</title> |
| 245 | </head> |
| 246 | |
| 247 | <body> |
| 248 | |
| 249 | <p>このファイルは、</p> |
| 250 | |
| 251 | <p><strong> |
| 252 | <script type="text/javascript" language="JavaScript"><!-- |
| 253 | document.write((new Date()).toLocaleString()); |
| 254 | //--></script> |
| 255 | </strong></p> |
| 256 | |
| 257 | <p>に読み込まれました。</p> |
| 258 | |
| 259 | </body> |
| 260 | |
| 261 | </html> |
| 262 | }}} |
| 263 | |
| 264 | document.write() メソッドを用いることにより、 <script> タグを記述した箇所に直接文字列を挿入することができます。 |
| 265 | |
| 266 | が、こうした書き方は、実際にはあまりやりません。できることが限られているからです。 <script> タグは <head> の中に配置し、その中では変数や関数の定義を記述し、それらをイベントハンドラから呼び出して利用する、というスタイルがもっとも一般的です。 |
| 267 | |
| 268 | |
| 269 | == !JavaScript で Web ページが動く仕組み == |
| 270 | |
| 271 | === window オブジェクト === |
| 272 | |
| 273 | それでは、 !JavaScript をどのように記述すると、どんな風に Web ページを動かすことができるのか、その仕組みを見ていくことにしましょう。 |
| 274 | |
| 275 | まずは、一番最初に示したサンプルプログラムを、もう一度見てみることにしましょう。 |
| 276 | |
| 277 | {{{ |
| 278 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> |
| 279 | <html> |
| 280 | |
| 281 | <head> |
| 282 | <meta http-equiv="content-type" content="text/html; charset=UTF-8"> |
| 283 | <title>hoge</title> |
| 284 | </head> |
| 285 | |
| 286 | <body> |
| 287 | |
| 288 | <form> |
| 289 | <input type="button" value="hoge" onclick="alert('hoge');"> |
| 290 | </form> |
| 291 | |
| 292 | </body> |
| 293 | |
| 294 | </html> |
| 295 | }}} |
| 296 | |
| 297 | !JavaScript によるプログラムが記述されているのは、以下の部分ですね。 |
| 298 | |
| 299 | {{{ |
| 300 | <input type="button" value="hoge" onclick="alert('hoge');"> |
| 301 | }}} |
| 302 | |
| 303 | この <input> 要素は type="button" となっているとおりボタンであり、これをクリックすることで、 onclick イベントハンドラに指定されている以下の !JavaScript プログラム |
| 304 | |
| 305 | {{{ |
| 306 | alert('hoge'); |
| 307 | }}} |
| 308 | |
| 309 | が実行される、という仕組みです。この alert() という関数に見えるものに、表示したい文字列を引数に渡して呼び出せば、その文字列が書かれたメッセージボックスを表示できるらしい、ということが分かると思います。 |
| 310 | |
| 311 | さて、この alert() ですが、これは'''正確には、 window.alert() が正式名称'''です。言い換えると、 window というオブジェクトが持つ alert() という名前の'''メソッド'''である、ということができます。 |
| 312 | |
| 313 | このプログラムは、もちろん以下のように書き換えても、同じように動作します。 |
| 314 | |
| 315 | {{{ |
| 316 | <input type="button" value="hoge" onclick="window.alert('hoge');"> <!-- alert('hoge'); と同じこと --> |
| 317 | }}} |
| 318 | |
| 319 | Web ブラウザ上で動作する !JavaScript においては、 window は特別なオブジェクトで、 window オブジェクトが持っている変数 (属性) や関数 (メソッド) を用いる際には、「window.」という記述を省略することが許されています。 |
| 320 | |
| 321 | window オブジェクトには様々な役割の属性やメソッドがあらかじめ用意されています。それらは今後のチュートリアルで、追って紹介してゆくことにします。 |
| 322 | |
| 323 | それから、 !JavaScript では、変数を使用する場合、 var 命令を用いて宣言する必要がありますが、 |
| 324 | |
| 325 | {{{ |
| 326 | var num = 10; // 変数 num を宣言し、値 10 で初期化する |
| 327 | }}} |
| 328 | |
| 329 | var 命令を用いずにいきなり適当な名前の変数に代入を行ってしまった場合、 |
| 330 | |
| 331 | {{{ |
| 332 | num = 10; // 変数 num はまだ宣言されていないが… |
| 333 | }}} |
| 334 | |
| 335 | 通常エラーになることはありませんが、実際には以下のように、 window オブジェクトのメンバ変数に値を代入したものとして扱われるので、注意が必要です。 |
| 336 | |
| 337 | {{{ |
| 338 | window.num = 10; // さっきの num = 10 と同じ意味 |
| 339 | }}} |