配列を使用してJavaScriptでタイプライター効果を作ろうとしています。最初に、配列に文字列をハードコーディングしたところ、効果が適切に機能しました。後で、ユーザー入力で同じことを試みましたが、うまくいきませんでした。
これはハードコードされたバージョンです:
<html>
<head>
<script type="text/javascript">
var arr=new Array()
var start=0;
var end=start + 1;
arr[0]="Hello";
function write()
{
setTimeout(function() {
document.body.innerHTML=document.body.innerHTML + arr[0].slice(start,end);
start++;
end=start + 1;
if (start < 5) {
write();
}
}, 500);
}
onload=write();
</script>
</head>
<body>
</body>
</html>
これは、ユーザー入力を取得しようとしているバージョンです。
<html>
<head>
<script type="text/javascript">
var arr=new Array()
var start=0;
var end=start + 1;
arr[0]=document.getElementById('word').innerHTML;
function write()
{
setTimeout(function() {
document.body.innerHTML=document.body.innerHTML + arr[0].slice(start,end);
start++;
end=start + 1;
if (start < 5) {
write();
}
}, 500);
}
</script>
</head>
<body>
<input type="text" value="Hello World" id="word">
<br>
<a href="javascript:write()">Click</a>
</body>
</html>
ユーザー入力のあるバージョンが適切に機能するように、コーディングにどのような変更を加える必要があるか教えてください。