Step.2 - あいさつメッセージを表示する

時間単位で違うメッセージを表示します。
「午後12時です。ご飯食べた?」とか、「もう午前2時ですよ! 寝ないのですか?」とか、ホームページの冒頭で表示しているところをよく見かけます。それです。

Step テーマ
● Array() 配列

実行例


▲TOP

リスト

<script type="text/javascript"><!--
myMes = new Array(24);
myMes[0] ="こんばんは午前0時です";
myMes[1] ="こんばんは午前1時です";
myMes[2] ="こんばんは午前2時です";
myMes[3] ="こんばんは午前3時です";
myMes[4] ="こんばんは午前4時です";
myMes[5] ="おはようございます午前5時です";
myMes[6] ="おはようございます午前6時です";
myMes[7] ="おはようございます午前7時です";
myMes[8] ="おはようございます午前8時です";
myMes[9] ="おはようございます午前9時です";
myMes[10]="おはようございます午前10時です";
myMes[11]="おはようございます午前11時です";
myMes[12]="こんにちは午後0時です";
myMes[13]="こんにちは午後1時です";
myMes[14]="こんにちは午後2時です";
myMes[15]="こんにちは午後3時です";
myMes[16]="こんにちは午後4時です";
myMes[17]="こんにちは午後5時です";
myMes[18]="こんばんは午後6時です";
myMes[19]="こんばんは午後7時です";
myMes[20]="こんばんは午後8時です";
myMes[21]="こんばんは午後9時です";
myMes[22]="こんばんは午後10時です";
myMes[23]="こんばんは午後11時です";
document.write(myMes[(new Date()).getHours()]);
// --></script>

↓ このフォームには、上記のリストと同じものが入っています。[CTRL]+[A]で全選択して、コピーできます。
▲TOP
サンプルだけの HTMLは こちらへ

説明

● 配列に値をセットする

myMes = new Array(24);

myMes変数です。自分の好きな名前で結構です。この変数にメッセージを格納します。

new Array() は、配列宣言 です。Array(24) なので、変数 myMes は 24個の「」を持つことになります。つまり、24時間分です。

続いて myMes[0]= ... で、それぞれの時間に表示したいメッセージを入れていきます。
変数右隣の括弧 [ ] は、配列宣言された変数のどこの「」を指すかを表す記号です。

※ 配列宣言を行わなければ変数に「行」はありませんので、1個のデータしか保存できません。このときは myMes= ... のようにデータをセットします。

数を数えていく場合、私たちは 1 から始めますが、配列は 0 から数えていきます。
myMes = new Array(24); と宣言すると、myMes[0]myMes[23] の行ができます。

午前0時は myMes[0] 、午後11時は myMes[23] というふうにデータをセットすることにします。
上のメッセージは、サンプルなので味気ないです。心のこもったメッセージに変えましょう。

注意:ゼロから数えるについて
24個の配列を生成すると、0番目から23番目のようにゼロから表現します。
ゼロから数えると説明しましたが、「こんにちは」は何文字かというと5文字です。「こ」は1文字、「こん」は2文字です。決して「こ」は0文字ではありません。何番目と何個がごちゃごちゃにならないように気をつけてくださいませ。

● 配列の値を表示する

document.write(myMes[(new Date()).getHours()]);

で、その時間のメッセージを表示します。
これはちょっと、まとめすぎました。
わかりやすくすると

myDate = new Date();
myHour = myDate.getHours();
myMessage = myMes[myHour];
document.write(myMessage);

上から、現在の時間を取得します。このデータは年月日時分秒の情報をもっています。
次に、その時間の「時(hour)」を取得します。取得したデータは0〜23のはずです。
その「時」番目myMes テーブルの内容を取り出します。上でセットしたメッセージです。
それを document.write() で表示します。

という感じです。4行のプログラムも慣れてくると 1行にまとめてしまったりもできます。


このようにあいさつ文はメッセージ定義と命令1行で済むという、非常に単純な仕掛けだったのです。

いま、上の命令文を完全に理解しようとしなくて結構です。たぶん、暗号文か英語を眺めているように見えると思います。実はプログラムも英語の勉強と同じで、慣れると見えるようになってきます。なぁ〜んとなく、分かったような気がすれば、このステップも終了です。

補足:24時間分も挨拶を考えるのは億劫だ!という方は、かなりとんでしまいましたが、Step.68に「あいさつ文を表示してみましょう 億劫編」があります。(^^;

▲TOP

関連参考リンク


▲TOP

変数宣言について

● 変数宣言 var

JavaScriptでは、
myMes = "こんにちは" ;
のように、いきなり変数を使った場合、myMes の格納空間を自動的に作ってくれて、データである "こんにちは" を格納してくれます。

しかし、高度なプログラム言語では「こういった変数を使いますので準備していてください」といった 変数宣言 という処理が必須です。
変数宣言は、JavaScriptにも省略可能ですがあります。

var myMes;
myMes = "こんにちは" ;

といった感じで
var 変数 ;
にて1度だけ宣言します。変数宣言の基本はプログラムの先頭で、プログラムで使う全ての変数を宣言します。

宣言はカンマ区切りで
var 変数 , 変数 , 変数 ;
のように連続して宣言もできますし、

var 変数 = データ ;
のように宣言して初期値を代入しておくこともできます。

JavaScript のデータの種類には 数値型、文字型、ブーリアン型、オブジェクト型、配列型 の5種類の「」がありますが全て var にて宣言します。

JavaScript は バリアントタイプの変数で、変数は全ての型を代入することができます。
var myMes = "こんにちは" ;
myMes = 1 ;
このように文字列が代入されていてる変数も、数値を代入することで数値型の変数に変更させることもできます。

また、
myMes = new Array(3) ;
のように3個の行、myMes[0] 〜 myMes[2] の配列宣言をしていても
myMes[3] = "こんにちは";
のように宣言範囲を超えた代入をすると、その分「行」を自動で追加生成してくれます。

変数にはグローバル変数とローカル変数がありますが、var で変数を宣言しなければグローバル変数になります。
var宣言も、それが function内で宣言すればローカル変数、functionの外で宣言すればグローバル変数となります。

ローカル変数は、function内のみで使用できて、functionの外からは変数を参照することができません。
グローバル変数は、function内外問わずにどこからでも変数を利用することができます。

オブジェクト型とはオブジェクトの位置を示す場所を格納することです。
document.getElementById(myID).style.left = myXpoint ;
document.getElementById(myID).style.top = myYpoint ;
は、
myObj = document.getElementById(myID).style ;
myObj.left = myXpoint;
myObj.top = myYpoint;
のように使うことができます。


変数宣言をするのは一般的ですが、当サイトはこの var 宣言はしていません。

それはなぜか!

このサイトのStep1〜Step99が作られたのは、1999年〜2002年。当時は var宣言してもすべてグローバル変数になったりするブラウザもあり、var宣言するのがアホくさかったために付けていません。(汗

よって、すべての変数がグローバル変数になるので、当サイトのサンプルを2つ以上貼りつけると変数名が重複して動かなくなる可能性が高いです。^^;
当サイトのサンプルはコピペで使い回しているので変数名もほとんど同じです。気に入ったサンプルをただ貼りつけるだけではなく、JavaScriptの勉強がてらに変数名は自分なりに変更して使ってください。

P.S) それと、var宣言も付けていってください。(汗

▲TOP