WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:タイマー

0:[投稿] たか [MAIL] [2002/10/22 10:32 ][環境:WIN+IE UNIX系+Perl]

JavaScriptのタイマーについて教えていただきたいのですが、本に次のようなアニメーションのサンプルが載っていました。

<HTML>
<HEAD>
<TITLE>画像でアニメーションを作成したい</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!--
image1=new Image();image1.src="banner1.gif";
image2=new Image();image2.src="banner2.gif";
image3=new Image();image3.src="banner3.gif";
function change(){
clearTimeout(timerID);
if(document.anime.src==image1.src)
  document.anime.src=image2.src;
else if(document.anime.src==image2.src)
  document.anime.src=image3.src;
else
  document.anime.src=image1.src;
timerID=setTimeout("change()",500);
}
//-->
</SCRIPT>
</HEAD>
<BODY onLoad="timerID=setTimeout('change()',500)">
<IMG SRC="banner1.gif" NAME="anime" ALT="案内">
</BODY.
</HTML>

このとき、onloadのあとに、なぜまたsetTimeoutを使っているのか分かりません。
onLoad=change()という風に、関数だけでいいように思うのですが・・・
初心者ですので、基本がよく分かっていません。分かりやすくご指導ください。
よろしくおねがいします。


1:[回答] JTR [2002/10/22 10:44 ]

onLoad=change()にするとそのページが読み込まれる前に関数change()でdocument.anime.srcにアクセスする場合が、あるからではないでしょうか..たぶん。

(ページが読み込前にdocument.anime.srcにアクセスするとエラーになる)


2:[回答] JTR [2002/10/22 10:49 ]

いや、よく考えたら、onLoadだから、もう読み込まれているかも...。
他の人に任した...。


3:[回答] andi [2002/10/22 10:55 ]

clearTimeout()のtimerIDが空でエラーになるブラウザを考慮した・・・とか?
何も試していないので実際にそのようなブラウザがあるのかどうかは分かりませんが。


4:[完了] たか [2002/10/22 12:18 ]

どうも有り難うございました。
プログラムを組む上で、あまり本質的な要因では、なさそうですね。


5:[完了] 謎の人R [2002/10/23 04:04 ]

> onLoad=change()という風に、関数だけでいいように思うのですが・・・
ページが読み込みが完了したとき、最初に表示されるべき画像は
banner1.gif

ところがonLoad=change()とすると読み込み後すぐに関数処理が行なわれ、最初に目にするのは
banner2.gif

となってしまう。

だからonLoad="timerID=setTimeout('change()',500)"としているわけです。
※あと、timerIDを宣言していないから、単にonLoad=change()ではエラーがでるはず。

> onLoad=change()という風に、関数だけでいいように思うのですが・・・
って、実際に試して、どうなるか確認してみましたか?

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World