• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:set TImeout)

フェードインさせたい

このQ&Aのポイント
  • 質問:最初にonloadで呼び出された関数の中にClearTImeaout(11行目)にありますがそこでこの関数はとまってしまわないのでしょうか?
  • 質問:また二つSettimeaoutがありますが二つとも識別する単語がtimer1で同じですけどごっちゃにならないのでしょうか?
  • 解答:関数内にあるClearTImeaoutは、タイマーをクリアするためのものであり、関数を止めることはありません。実際には関数の中でタイマーをクリアしても、関数自体は続行されます。また、二つのSettimeaoutは同じタイマー名timer1を使用していますが、異なるスコープ内に存在するため、ごちゃ混ぜにはなりません。それぞれのタイマーは独立して動作します。

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

  • ベストアンサー
  • yukio1
  • ベストアンサー率47% (8/17)
回答No.1

まずは、コピペして動かしてみたのですが、動きませんでした。 onLoadの前のスペースが無いのと、setTimeoutがsetTImeoutになってたので、 動きませんでした。コピーする時は稼動確認してくださいね。 で、ご質問の 「最初にonloadで呼び出された関数の中にClearTImeaout (11行目)にありますがそこでこの関数はとまって しまわないのでしょうか?」 ですが、確かに止まります。 でも、再度setTimeoutを呼んでいますので、 処理は継続されます。 「また二つSettimeaoutがありますが二つとも識別する 単語がtimer1で同じですけどごっちゃにならないのでしょうか?」 setTimeout関数の返却値であるTimer_idは、同じでなければいけません。 これは、一度目にsetTimeout関数を使用したときにIDが振られ、 timer1に取得されますそれが、fadein関数内のclearTimeoutで 止めなくてはいけないので、取得しておく必要があります。 また、fadein関数内部でのsetTimeout関数で取得したものも、 処理を止めるためにIDの取得が必要となります。 うまく説明できているかわかりませんが、 こんな感じでよろしいでしょうか。 以下にコメント記入したソースを記しておきます。 <html> <head> <title>フェードインさせたい </title> <script language="JavaScript"> <!-- r_color="000123456789abcd"; g_color="0123456789abcdef"; b_color="000123456789abcd"; function fadein(pos,speed){ //無限処理を一度止める clearTimeout(timer1); //必要データセット r=r_color.charAt(pos); g=g_color.charAt(pos); b=b_color.charAt(pos); document.bgColor="#"+r+r+g+g+b+b; if(pos<15){ //処理を再稼動させる timer1=setTimeout("fadein("+(pos+1)+","+speed+")",speed); }else{ //処理をとめる clearTimeout(timer1); } } function aaa(){ //無限に処理をさせる //100ミリ秒待って、 fadein(0,100) を評価する timer1=setTimeout('fadein(0,100)',100); } //--> </script> </head> <body text"#000000" onLoad="aaa()"> <font size="5">フェードインします</font> </body> </html>

R7414
質問者

お礼

>まずは、コピペして動かしてみたのですが、動きませんで>した。 すいませんでした 本に載ってる奴をそのまま入力したとおもっていたのですがミスってしまいましたTT 次からはご指摘通りに確認してからコピペすることにします本当にすいませんでした また丁寧なご説明ありがとうございました! 一度止めておいてまた再開するということですね

すると、全ての回答が全文表示されます。

関連するQ&A