- ベストアンサー
このスクリプトのどこが間違っているか教えてください
ブラウザウィンドウの背景を10秒ごとに、 1.jpg→2.jpg→3.jpg・・・ というふうに変化させたいとします。 以下のスクリプトを考えたんですが、 「オブジェクトを指定してください。」 とエラーが出ます。 ただ単に背景を表示させるだけならうまくいくのですが、 setTimeoutメソッドを追加して背景を変化させようとすると エラーが出ます。 一体どのようにすればうまくいくのでしょうか? よろしくお願いします<(_ _)> ********************************************* <html> <head> <script> <!-- function FUNC(){ jikan=new Date(); ss=jikan.getSeconds(); if(ss>=0 || ss<10){ document.write("<body background='1.jpg'>"); } if(ss>=10 || ss<20){ document.write("<body background='2.jpg'>"); } if(ss>=20 || ss<30){ document.write("<body background='3.jpg'>"); } if(ss>=30 || ss<40){ document.write("<body background='4.jpg'>"); } if(ss>=40 || ss<50){ document.write("<body background='5.jpg'>"); } if(ss>=50 || ss<60){ document.write("<body background='6.jpg'>"); } setTimeout("FUNC()",1000); } //--> </script> </head> <body onLoad="FUNC()"> </body> </html> *********************************************
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
関数を使うと上手く行かないようなので、約10秒毎に更新するようにしてみました <html> <head> <Script language=JavaScript> <!-- bg = new Array(); jikan = new Date(); ss=jikan.getSeconds(); bg[1]='<body background="1.jpg">'; bg[2]='<body background="2.jpg">'; bg[3]='<body background="3.jpg">'; bg[4]='<body background="4.jpg">'; bg[5]='<body background="5.jpg">'; bg[6]='<body background="6.jpg">'; n=6 if (ss<50) {n=5} if (ss<40) {n=4} if (ss<30) {n=3} if (ss<20) {n=2} if (ss<10) {n=1} document.write(bg[n]); function FUNC(){ location.reload() } setTimeout("FUNC()",10000); //--> </script> </head> </body> </html>
その他の回答 (1)
- mousengoke
- ベストアンサー率50% (197/388)
まず、FUNC()関数内でdocument.writeを使われていますがこれはソースにそれを付け加えるようなイメージで、今回の場合<body>タグだらけになり好ましくありません。 また、if文が多数ありますが今回の場合二つ以上に合うことがないのでelseで引っかかったものはそこで止めるようにしておいたほうがいいでしょう。なお、下のサンプルではすでに排除されている条件も"念のため"入れておきましたが不要なら削除してもかまいません。 ちなみに、下のサンプルは Internet Explorer5.0/5.5 動作確認済み Netscape Navigator4.75 動作せず Netscape6.2 一応の変化は確認できましたがプログラム通り変化していると言うより非アクティブになった後再びアクティブになったとき変化しているような気が。 すべてWindowsで確認しいます。 正直言ってあまり対応状況がいいとはいえませんね。 ********************************************* <html> <head> <script> <!-- function FUNC(){ if(document.body.style){ jikan=new Date(); ss=jikan.getSeconds(); if(ss >= 0 && ss < 10){ document.body.style.backgroundImage = "url('1.gif')"; }else if(ss >= 10 && ss<20){ document.body.style.backgroundImage = "url('2.gif')"; }else if(ss >= 20 && ss < 30){ document.body.style.backgroundImage = "url('3.gif')"; }else if(ss >= 30 && ss<40){ document.body.style.backgroundImage = "url('4.gif')"; }if(ss >= 40 && ss < 50){ document.body.style.backgroundImage = "url('5.gif')"; }else if(ss >= 50 && ss<60){ document.body.style.backgroundImage = "url('6.gif')"; } setTimeout("FUNC()",1000); } } //--> </script> </head> <body onLoad="FUNC()"> </body> </html> *********************************************
お礼
if条件式が || ではなく && なのは投稿してすぐ気づきました。(汗) まだ基本的な学習に終始しているため、 「elseで引っかかったものはそこで止める」具体的な方法がピンとこないのですが、 これから追々勉強していこうと想います。 どうもありがとございました<(_ _)>
お礼
配列や、10秒ごとの更新など、 こういう方法もあったんだと感心しました。 自分の場合、こういった違ったアプローチがなかなか浮かんでこないのが哀しいです(汗) もっと勉強してみます。 ありがとうございました<(_ _)>