1文字ずつページ上に文字を表示しクリックで一括表示する

説明

1文字ずつページに文字列を表示するにはタイマーを利用します。JavaScriptのタイマーにはsetTimeout()とsetInterval()の2種類がありますが、処理に終わりがある場合にはsetTimeout()を使う方が安全です。文字列の表示にはカウンタを用意し、文字列の表示位置を示すようにします。タイマーで定期的にカウンタを増やし文字列を表示していきます。カウンタの値が文字列よりも少ない場合はタイマーを設定し繰り返し表示処理を行います。
クリック時に全ての文字列を表示するには表示領域にクリックイベント(onclick)を指定します。イベントが発生したら全ての文字列を表示しカウンタを文字列長と同じにします。
JavaScriptテクニック ブック  詳しい解説などはJavaScriptテクニック ブックを参照してください。

サンプルコード [実行]

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>JavaScript Sample</title>
<link rel="stylesheet" type="text/css" href="main.css" media="all">
<script type="text/javascript" src="main.js"></script>
</head>
<body>
<h1>1文字ずつページ上に文字を表示しクリックで一括表示する</h1>
<form action="./check.cgi" method="get" name="mainForm">
<input type="button" id="dispButton" value="表示開始">
</form>
<div id="result">---</div>
</body>
</html>

window.onload = function(){
document.getElementById("dispButton").onclick = function(){
message.start("result","画面上に1文字ずつ表示することができます。クリックすると全部表示されます。");
}
}
var message = {
oneChar : function(){
document.getElementById(this.outID).innerHTML = this.text.substr(0, this.count);
this.count++;
if (this.count <= this.text.length) setTimeout("message.oneChar()", 100);
},
allChar : function(){
document.getElementById(message.outID).innerHTML = message.text;
message.count = message.text.length;
},
start : function(oID, str){
this.text = str;
this.count = 0;
this.outID = oID;
document.getElementById(this.outID).onclick = message.allChar;
setTimeout("message.oneChar()", 100);
}
}