12.フォームにメッセージをスクロールさせる(type3)
複数のメッセージを次々と流していくのは前のtype2と同じですが、表示方法がワープロみたいに1文字ずつ入力されていくように見えるのが特徴です。
<HTML>
<TITLE>フォームにメッセージをスクロールさせる(type3)</TITLE>
<BODY onload="mess1()"> //(1)
<SCRIPT language="JavaScript">
<!--
me = new Array(5); //(2)
me[0] = ""; //(3)
me[1] = "ここに来たついでに掲示板かゲストブックにカキコしていってね♪^^ ";
me[2] = "あゆの初ライブコンサート第1幕・第2幕とも無事終了。ありがとうございました。 ";
me[3] = "08.12/新作着メロを4曲追加しました。 ";
me[4] = "☆★☆ようこそ!Ayu&Riskyへ!^^☆★☆ ";
var messsuu = 4; //(4)
var NN = (navigator.appName=="Netscape");
var charsuu = 1;
if(NN) charsuu = 2;
var Count=0;
var scr=0;
var tugi="_";
function mess1(){
document.fmess.tmess1.value = me[messsuu].substring(0,Count)+tugi;
Count=Count+charsuu;
if(Count > me[messsuu].length+10){
document.fmess.tmess1.value = me[messsuu].substring(scr=scr+charsuu,me[messsuu].length);
if(scr > me[messsuu].length){
Count = 0;
scr = 0;
if(--messsuu < 1) messsuu=3; //(5)
}
}
setTimeout("mess1()",60); //(6)
}
// end -
// -->
</SCRIPT>
<form name="fmess">
<p><font size="3"><input type="text" size="75" name="tmess1"> </font></p>
</form>
</BODY>
</HTML>
(説明)
ページ読み込みと同時に(1)のBODYタグにあるonload属性のmess1関数が呼び出され、スクリプトが実行されます。
(2)の「me = new Array(5);」では変数meの数を設定します。ここでは5つ(変数は0〜4)に設定しています。
(3)のme[0]〜me[4]にはそれぞれのメッセージが入りますが、注意するのはこのスクリプトは変数meが大きい方から順に(ここではme[4]から)表示されるので、最初に表示するメッセージを一番下にします。また、me[0]には何も書かないでください。(エラーの原因になります。)次に、その下のvar messsuu(4)にメッセージの数(変数meでもっとも大きい数。ここではもっとも大きいのは4なので4を入力)を入れます。
(5)の「if(--messsuu < 1) messsuu=3;」では「変数messsuuが1未満のときは変数messsuuの3を代入しなさい。」という処理を行います。つまりme[1]の「ここに来たついでに掲示板かゲストブックにカキコしていってね♪^^」の表示が終わったあと、次にくる変数meは0しかありませんから、変数meが0になったときはこの処理によってmeに3が代入され、me[3]の「08.12/新作着メロを4曲追加しました。」が表示されます。
となると、me[4]の「☆★☆ようこそ!Ayu&Riskyへ!^^☆★☆」はどうなったんだ、とお思いの方も多いでしょう。たしかにページが読み込まれたあとは「☆★☆ようこそ!Ayu&Riskyへ!^^☆★☆」は表示されますが、2回目以降は表示されません。この場合も「if(--messsuu < 1) messsuu=3;」のmesssuuを4にしてやることで2回目以降も「☆★☆ようこそ!Ayu&Riskyへ!^^☆★☆」が表示されます。なぜここではそうしたかというと、「☆★☆ようこそ!Ayu&Riskyへ!^^☆★☆」のようなメッセージはあいさつ文にあたるため、2回目以降も表示するとしつこく感じるからです。
(6)の「setTimeout("mess1()",60);」で速度を調節します。数字が小さくなるほど早くなり、0で最速になります。
実行結果