• ベストアンサー

ウィンドウを振るわす開始時間を指定したいのですが…

数日前にここで質問して教えていただいたのですが… その方法がいまいよくわかりません。 ページを読み込んでから数秒後に実行し、振動が止まってからまた数秒後に振動させたいのです… <html> <head> <title>ウィンドウを揺らす</title> <script Language="JavaScript"><!-- x = new Array( 10, 3,-6, 8,-10,-7,5,-3,0,0,0,0,0,0,0,0,0,0,0,0); y = new Array(-12, 6,-3,10, -9,-2,8, 2,0,0,0,0,0,0,0,0,0,0,0,0); count = 0; function purupuruWin() { if (x[count] != 0) moveBy(x[count],y[count]); count++; if (count >= x.length) count = 0; setTimeout("purupuruWin()",100); } // --></script> </head> <body onLoad="purupuruWin()"> ウィンドウを揺らす </body> </html> 上記の中でどの部分の数字が処理開始時間を指定する 数字なのでしょうか?? お詳しい方、よろしくお願いします。

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

  • ベストアンサー
noname#199778
noname#199778
回答No.3

横槍のようで失礼しますが… JavaScriptの処理の開始時間を指定する場合は、setTimeout()で行うのが通例だと思います。 metaタグを使うのは、この場合ではあまり適切ではないのではないでしょうか。 #2の回答にある補足のソースを改造してみました。 これではいかがでしょうか。 <html> <head> <META name="GENERATOR" content="IBM HomePage Builder 2001 V5.0.2 for Windows"> <title>ウィンドウを揺らすウィンドウを揺らす</title> <script Language="JavaScript"><!-- x = new Array( 10, 3,-6, 8,-8,-7,5,-3,5,-7); y = new Array(-12, 6,-3,10, -7,-2,8, 2,-8,6); count = 0; n=0; function purupuruWin() { if (x[count] != 0) moveBy(x[count],y[count]); count++; if (count >= x.length) count = 0; n++; if(n < 20){setTimeout("purupuruWin()",100);} else if(n==20){setTimeout("purupuruWin()",3000);} else if(n <= 40){setTimeout("purupuruWin()",100);} } // --></script> </head> <BODY onload="setTimeout('purupuruWin()',5000)">ウィンドウを揺らすウィンドウを揺らす</BODY> </html> なお、setTimeout()の書式は、 setTimeout(実行する処理,処理開始までの待ち時間) で、待ち時間で設定する値は1000分の1秒単位になります。 失礼しました。

quick_s
質問者

お礼

ありがとうございます。 ようやくわかってきました。 私のイメージに近づいてきました。が、振動が止まった後、わずかにウィンドウが最初の位置より少し右上にずれてしまいます。 これを修正するにはどうすればよいのでしょうか?? 何度もすいません…

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

その他の回答 (3)

noname#199778
noname#199778
回答No.4

ごめんなさい。 #3のアドバイスで、一箇所スクリプトを書き間違えました。 同じ位置に戻ってくるところで処理を止めるつもりが、1回余計に処理を行うようになっていました。 else if(n <= 40){setTimeout("purupuruWin()",100);} この行(スクリプトの終止タグの2つ上)を else if(n < 40){setTimeout("purupuruWin()",100);} こうしてみてください。 修正前は「nの値が40以下であるならば、以下の処理を行う」となっていましたが、修正後は「nの値が40より小さければ、以下の処理を行う」という内容になります。 これで、余計な1回分の処理を削ることができるので、同じ位置に戻ったところで処理が止まると思います。

quick_s
質問者

お礼

ありがとうございました。 これで思っていたようにすることができました! 親切にお答え頂き感謝しています。

すると、全ての回答が全文表示されます。
  • qwer021
  • ベストアンサー率24% (70/281)
回答No.2

追記させて頂きます。 xxx.HTMLは揺れるHTMLです。

quick_s
質問者

補足

ありがとうございます。 しかしながら、当方無知なものでして…(笑) 具体的に申しますと ページを読み込んだ直後は何も行わず、5秒後に2秒間だけ振動させ、また3秒後に2秒間だけ振動させたいのです。 できれば下記に直接書き込んでもらえないでしょうか? ちなみにxxx.htmlはd.htmlです。 お手数をおかけしますが、助けてやってください。 <html> <head> <META name="GENERATOR" content="IBM HomePage Builder 2001 V5.0.2 for Windows"> <title>ウィンドウを揺らすウィンドウを揺らす</title> <script Language="JavaScript"><!-- x = new Array( 10, 3,-6, 8,-10,-7,5,-3,0,0,0,0,0,0,0,0,0,0,0,0); y = new Array(-12, 6,-3,10, -9,-2,8, 2,0,0,0,0,0,0,0,0,0,0,0,0); count = 0; function purupuruWin() { if (x[count] != 0) moveBy(x[count],y[count]); count++; if (count >= x.length) count = 0; setTimeout("purupuruWin()",100); } // --></script><script Language="JavaScript"><!-- x = new Array( 10, 3,-6, 8,-10,-7,5,-3,0,0,0,0,0,0,0,0,0,0,0,0); y = new Array(-12, 6,-3,10, -9,-2,8, 2,0,0,0,0,0,0,0,0,0,0,0,0); count = 0; function purupuruWin() { if (x[count] != 0) moveBy(x[count],y[count]); count++; if (count >= x.length) count = 0; setTimeout("purupuruWin()",100); } // --></script> <META HTTP-EQUIV="refresh" CONTENT="150"> </head> <BODY onload="purupuruWin()">ウィンドウを揺らすウィンドウを揺らす</BODY> </html>

すると、全ての回答が全文表示されます。
  • qwer021
  • ベストアンサー率24% (70/281)
回答No.1

ブルブル答えた物です。 リフレッシュは試されましたか? HTMLの中に <head> <META HTTP-EQUIV="refresh" CONTENT="5;URL=http://hogehoge/xxx.HTML"> </head> とやれば5秒後に震えるかと思います? CONTENT="5 この数字が秒数になります。

quick_s
質問者

お礼

ありがとうございます。 しかし私がまちがっているのかうまくいきません。

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

関連するQ&A