OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

タイプライター風 part2

  • 困ってます
  • 質問No.180236
  • 閲覧数53
  • ありがとう数3
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 53% (55/103)

以前、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さんに教えていただいたスクリプトを永遠に
続けるような感じです。)
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1
レベル10

ベストアンサー率 50% (72/143)

はーい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
お礼コメント
novaakira

お礼率 53% (55/103)

ありがとうございました。
おかげで作りたかったスクリプトができました。
投稿日時 - 2001-12-10 18:01:23
-PR-
-PR-

その他の回答 (全2件)

  • 回答No.2
レベル9

ベストアンサー率 41% (40/97)

自分なりに簡単にできるところはなるべく簡単にするようにしてみました。 (変わりすぎ??) このような場合は配列を使うと比較的簡単に出来ます。 ↓では配列の要素を追加するだけで(str[4] = ・・・,str[5] = ・・・のように)表示する文字列の数を増やしたり減らしたり出来ます。 <head> <script language="javascrip ...続きを読む
自分なりに簡単にできるところはなるべく簡単にするようにしてみました。
(変わりすぎ??)
このような場合は配列を使うと比較的簡単に出来ます。
↓では配列の要素を追加するだけで(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>
お礼コメント
novaakira

お礼率 53% (55/103)

ありがとうございます。

配列は以前、嫌な思いをしたもので....
それから配列と聞くと体が避けていくんですよね。
ですが、pesoさんのスクリプトの方が、表示時間を同じに
してるのに、表示が速いですね。
やっぱりちゃんと配列を覚えたほうがよさそうですね。
でも体が......
投稿日時 - 2001-12-10 18:04:16
  • 回答No.3
レベル9

ベストアンサー率 41% (40/97)

すいません、前回の所に配列は苦手、っていうようなことが書いてありましたね。 まぁ、せっかくなんでこれを機会に配列を覚えましょう。 var str = new Array();    ←配列の宣言は 変数 = new Array() のようにします。 str[0] = "わしはしばらく出てこないよーーー           "; str[1] = "しばらく出 ...続きを読む
すいません、前回の所に配列は苦手、っていうようなことが書いてありましたね。
まぁ、せっかくなんでこれを機会に配列を覚えましょう。

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];

このように、配列は連続した処理には欠かせません。
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ