以前、pesoさん、xruzさんに教えられたこと等をもとに
以下のようなscriptを作成しました。
///////
<head>
<script language="javascript">
<!--
str1="わしはしばらく出てこないよーーー ";
str2="しばらく出てこないよーーー ";
str3="出てこないってばーーー ";
blnk = "          ";
str = str1+blnk;
cnt=0;
mcnt = 0;
msg = "";
stcnt=0;
i=0;
timeID = 10;
function type(){
if(i<=str.length){
if(document.all){
stcnt++;
if (stcnt>3){
stcnt = 0;
msg += str.substring(mcnt,mcnt+1);
mcnt++;
if (mcnt >= str.length) { mcnt=0; msg=""; }
}
csr = " ";
if (stcnt & 1) csr ="_";
myText.innerHTML=msg+csr;
}
else if(document.layers)
{
document.myText.document.open();
document.myText.document.write(msg.substring(0,i));
document.myText.document.close();
}
i=++i;
clearTimeout(timeID);
timeID=setTimeout("type()",50);
}
else{
i=0;
clearTimeout(timeID);
timeID=setTimeout("type()",50);
}
}
//-->
</script>
</head>
<body bgcolor="#cccccc" onload="type()">
<div id="myText" style="position:absolute;top:20;left:20;"></div>
</body>

pesoさん、xruzさん、ありがとうございました。これでほぼ、僕の作りたい
スクリプトができました。(不要なところもありますが......)

ですが、このままだとstr1のみしか表示されず、str2、str3は表示され
ません。(当然ですが)
str1を表示した後にstrにstr2、str3を入れるにはどうしたらいいので
しょうか?(以前、xruzさんに教えていただいたスクリプトを永遠に
続けるような感じです。)

A 回答 (3件)

すいません、前回の所に配列は苦手、っていうようなことが書いてありましたね。


まぁ、せっかくなんでこれを機会に配列を覚えましょう。

var str = new Array();    ←配列の宣言は 変数 = new Array() のようにします。

str[0] = "わしはしばらく出てこないよーーー           ";
str[1] = "しばらく出てこないよーーー           ";
str[2] = "出てこないってばーーー           ";


配列の要素は 配列の名前[数字] になります。(javascriptでは 0 から始まります。)

例えば、警告ダイアログに しばらく出てこないよーーー           を
表示したい場合は
alert str[1];
のようになります。
で、この[ ]の中の数字のことを添字といいます。普通はこの添字に変数を使うことが多いです。

変数を使って配列の中身(今回は ”しばらく出てこないよーーー          ”)を警告ダイアログに表示します。
i = 1;
alert str[i];

次の例は配列の中身を順番に警告ダイアログに表示します。
for (i = 0; i < 3; i++) alert str[i];

このように、配列は連続した処理には欠かせません。
    • good
    • 0

自分なりに簡単にできるところはなるべく簡単にするようにしてみました。


(変わりすぎ??)
このような場合は配列を使うと比較的簡単に出来ます。
↓では配列の要素を追加するだけで(str[4] = ・・・,str[5] = ・・・のように)表示する文字列の数を増やしたり減らしたり出来ます。

<head>
<script language="javascript">
<!--

//打ち出される文字は配列strに格納

var str = new Array();

str[0] = "わしはしばらく出てこないよーーー           ";
str[1] = "しばらく出てこないよーーー           ";
str[2] = "出てこないってばーーー           ";

var timespd = 50;//タイマーの速さ

var maxrow = str.length; //strの要素の数を格納
var rowcnt = 0; //現在表示中のstrの添字
var msg = ""; //実際に表示される文字を一時的に格納
var i = 1; //今msgに格納されている文字数
var timeID; //タイマー制御用


function type(){
if (i <= str[rowcnt].length){
msg = str[rowcnt].substr(0, i);
if (i & 1) msg += "_";// i (今表示する文字数)が奇数だったら_を付け加える
i++;
}
else{
i = 1;
rowcnt = (rowcnt + 1) % maxrow;//次に表示するstrの添字の決定
msg = "";
}


if (document.all){
myText.innerHTML = msg;
}

else if (document.layers){
document.myText.document.open();
document.myText.document.clear();
document.myText.document.write(msg);
document.myText.document.close();
}

clearTimeout(timeID);
timeID = setTimeout("type()",timespd);

}
//-->
</script>
</head>
<body bgcolor="#cccccc" onload="type()">
<div id="myText" style="position:absolute;top:20;left:20;"></div>
</body>
    • good
    • 0
この回答へのお礼

ありがとうございます。

配列は以前、嫌な思いをしたもので....
それから配列と聞くと体が避けていくんですよね。
ですが、pesoさんのスクリプトの方が、表示時間を同じに
してるのに、表示が速いですね。
やっぱりちゃんと配列を覚えたほうがよさそうですね。
でも体が......

お礼日時:2001/12/10 18:04

はーいnovaakiraさん、xruzです。


これでいいでしょうか?

<head>
<script language="javascript">
<!--
str1="わしはしばらく出てこないよーーー ";
str2="しばらく出てこないよーーー ";
str3="出てこないってばーーー ";
blnk = "          ";
str = str1+blnk;
cnt=0;
mcnt = 0;
msg = "";
stcnt=0;
i=0;
j=0;
timeID = 10;
function type(){
if(i<=str.length){
if(document.all){
stcnt++;
if (stcnt>3){
stcnt = 0;
msg += str.substring(mcnt,mcnt+1);
mcnt++;
if (mcnt >= str.length) { mcnt=0; msg="";
switch (j) {
case 0: {j++; str=str2+blnk; break;}
case 1: {j++; str=str3+blnk; break;}
case 2: {j=0; str=str1+blnk; break;}
}
}
}
csr = " ";
if (stcnt & 1) csr ="_";
myText.innerHTML=msg+csr;
}
else if(document.layers)
{
document.myText.document.open();
document.myText.document.write(msg.substring(0,i));
document.myText.document.close();
}
i=++i;
clearTimeout(timeID);
timeID=setTimeout("type()",50);
}
else{
i=0;
clearTimeout(timeID);
timeID=setTimeout("type()",50);
}
}
//-->
</script>
</head>
<body bgcolor="#cccccc" onload="type()">
<div id="myText" style="position:absolute;top:20;left:20;"></div>
</body></html>

がんばってくださいね(~:~i
    • good
    • 0
この回答へのお礼

ありがとうございました。
おかげで作りたかったスクリプトができました。

お礼日時:2001/12/10 18:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング

おすすめ情報