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で最速になります。

実行結果


BACK