• ベストアンサー

このスクリプトのどこが間違っているか教えてください

ブラウザウィンドウの背景を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> *********************************************

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

  • ベストアンサー
  • siyuno_o
  • ベストアンサー率26% (135/510)
回答No.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>

spnk55
質問者

お礼

配列や、10秒ごとの更新など、 こういう方法もあったんだと感心しました。 自分の場合、こういった違ったアプローチがなかなか浮かんでこないのが哀しいです(汗) もっと勉強してみます。 ありがとうございました<(_ _)>

その他の回答 (1)

回答No.1

まず、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> *********************************************

spnk55
質問者

お礼

if条件式が || ではなく && なのは投稿してすぐ気づきました。(汗) まだ基本的な学習に終始しているため、 「elseで引っかかったものはそこで止める」具体的な方法がピンとこないのですが、 これから追々勉強していこうと想います。 どうもありがとございました<(_ _)>

関連するQ&A

  • HPで時間ごとに背景を変えたい

    HPの設定で、時間ごとに背景を変えたいと思ってます。 そこで検索してみたところこんなソース↓を発見したのですが、一日に三回変えられるものでした。これを四回にしたいのですが、上手く書き換えられません。どこを直せばよいでしょうか? <script language="JavaScript"> <!--// bg1=0; bg2=12; bg3=20; jikoku=new Date(); jikan=jikoku.getHours(); if(jikan>=bg1&&jikan<bg2) document.write('<body background="img/1.jpg">'); else if(jikan>=bg2&&jikan<bg3) document.write('<body background="img/2.jpg">'); else document.write('<body background="img/3.jpg">'); //--> </script>

  • javasciptで時間で背景変更について

    javasciptで時間帯によって背景画像を変更したいと思い、下記を外部ファイルで読み込んでいるのですが、safariでは表示でき、IEやFIREFOXでは表示されないです。 どうすればよいでしょうか。 function geth(t){ if (t<=2) document.write("<BODY BACKGROUND='image.jpg'>"); else { if (t<=5) document.write("<BODY BACKGROUND='image.png'>"); else { if (t<=8) document.write("<BODY BACKGROUND='image.jpg'>"); else { if (t<=11) document.write("<BODY BACKGROUND='image.png'>"); else { if (t<=14) document.write("<BODY BACKGROUND='image.jpg'>"); else { if (t<=17) document.write("<BODY BACKGROUND='image.png'>"); else { if (t<=20) document.write("<BODY BACKGROUND='image.jpg'>"); else { if (t<=23) document.write("<BODY BACKGROUND='image.png'>"); }}}}}}} }

  • 時間ごとにスタイルシートを変える

    <HEAD> <SCRIPT LANGUAGE="JavaScript"> function geth(t){ if ( t <= 05 ) document.write ("<body link="#0000ff">"); else { if ( t <= 17 ) document.write ("<body link="#0000ff">"); else { if ( t <= 23 ) document.write ("<body link="#0000ff">"); }}} </SCRIPT> </HEAD> <SCRIPT LANGUAGE="JavaScript"> h = new Date(); geth(h.getHours()); </SCRIPT> Java Script を使うと時間ごとに異なったフォントの色を のように指定できますが、 リンクの背景色のようなスタイルシートを使わないと出来ない 部分を時間ごとに色を変える方法をお願いします。 a { background-color : ccf ; }

  • useless setTimeout cal 

    すみません。教えて下さい。 下のコードを書いて、動きはするんですが、実行後に 「useless setTimeout cal」というエラーが出てしまいます。 エラーを回避したいのですが、どうすればいいのでしょうか。 IE6/IE8/firefox3.6 などで試しました *********************************** <html> <head> <script type = 'text/javascript'> function item(){ var i = 0; write(); function write(){ document.write(i+"<br>"); i ++; if(i<10){setTimeout(write(),100);} } } </script> </head> <body> <script type = 'text/javascript'>item();</script> </body> <html> ***********************************

  • 時間帯によって背景画像を変える

    タイトル通りなのですが、なかなかうまくいきません・・・。 <BODY style="background-image:url(test.gif);background-repeat:no-repeat; background-attachment:fixed;background-position:bottom right;"> スタイルを使って右下に背景画像を表示しています。このtest.gifを時間帯によって変えたいです。 自分なりにこのようにしてheadタグの中に埋め込みましたがうまくいきません。 <SCRIPT LANGUAGE="JavaScript"> <!--- function geth(t){ if (t<=5) document.write("<BODY style='background-image:url(test1.gif);background-repeat:no-repeat; background-attachment:fixed;background-position:bottom right;'>"); else { if (t<=11) document.write("<BODY style='background-image:url(test2.gif);background-repeat:no-repeat; background-attachment:fixed;background-position:bottom right;'>"); else { if (t<=17) document.write("<BODY style='background-image:url(test3.gif);background-repeat:no-repeat; background-attachment:fixed;background-position:bottom right;'>"); else { if (t<=23) document.write("<BODY style='background-image:url(test4.gif);background-repeat:no-repeat; background-attachment:fixed;background-position:bottom right;'>"); }}} } //---> </SCRIPT> <SCRIPT LANGUAGE="JavaScript"> <!--- h = new Date(); geth(h.getHours()); //---> </SCRIPT> <BODY BACKGROUND='test.gif'>という普通の背景の表示の仕方ならうまくできました。スタイルはheadの中では使えないのでしょうか・・・?どのようにすればうまくいくでしょうか?JavaScriptに関してはほとんど無知ですがよろしくおねがいします。 ※意味不明なことを言っていたらすみません。

  • なぜbgColorは#dededeになってしまったのでしょうか?

    背景色が黒→白に変わるというスクリプトを書いてみて、 実際の使用上はさほど問題ではないのですが、 引っかかる部分があるので質問させていただきました。 <html> <head> <script type="text/javascript"> <!-- i=0; function FUNC(){ color=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"]; document.bgColor="#"+color[i]+color[i]+color[i]+color[i]+color[i]+color[i]; i++; status=document.bgColor+" "+color[i]; if(i>=color.length){return;} setTimeout("FUNC()",50); } //--> </script> </head> <body onload="FUNC()"> </body> </html> このスクリプトで、定義した配列数を超えると処理を中止させる if(i>=color.length){return;} を削除して実行すると、 color[15]を超えた時点、つまり背景色が終点の#ffffffから さらに変わろうとした段階で未定義値のエラーが出るかと思いきや、 背景色が、中途半端な#dededeという色で固定されてしまいました。 配列でいうと "#"+color[13]+color[14]+color[13]+color[14]+color[13]+color[14] ですね。 なぜこのようになったのかさっぱり理解不能です。 どなたかご教授をお願いいたします<(_ _)>

  • 外部シートの背景色を得る

    xx.cssに .bodybg{background-color: #eeeeee} と書いてあります。 こうしてbodyの背景色が決められています。 このbodyの中から#eeeeeeを得ようとして <head> <title></title> <link rel="stylesheet" type="text/css" href="xx.css"> </head> <body class="bodybg"> <script language="JavaScript"> function func(){ alert(document.body.bgColor) } </script> と書きました。得たいのは#eeeeeeですが、単に#eeeeeeといて得るのではなく、bodyの背景色を得る方法を教えてください。

  • これは何をするスクリプトですか?

    <head> <script type="text/javascript"> <!-- function loading() { if (document.getElementById){ document.getElementById('load').style.visibility = 'hidden'; } else { if (document.layers){ document.layers['load'].visibility = 'hidden'; } else { document.all('load').style.visibility = 'hidden'; }}} // --> </script> </head> <body onload="loading()"> 詳細は略して書いています。 プログラムに全く詳しくないので、何をやろうとしているスクリプトなのかわかりません。 皆様には簡単かとは思いますが、よろしくお願いします。

  • ScriptがFirefoxで動かない。

    素人な質問ですみません。 htmlファイルで背景画像をスクロール させようとしています。   Internet ExplorerとGoogleChromeでは 動作するのですが、FireFoxで動作しません。 自分で調べてもわからなかったため、 知識のある方にご教授をお願いしたいです。 よろしくお願いします。   <HTML><LEFT><HEAD> <META HTTP-EQUIV="Context-Type" content="text/html; charset=SHIFT-JIS"><!-- あ --><META NAME="Description" CONTENT=" "><meta http-equiv="adimage" content="200"><TITLE>menu</TITLE> <HEAD> <script language="JavaScript"> <!-- var myspd= 120; var y = 0; function mygo() { document.body.style.backgroundPositionY = y--;   setTimeout("mygo()",myspd); } // --></script> </HEAD> <BODY BACKGROUND="http://hakoniwakensetsu.web.fc2.com/img/kumo.gif" onLoad="mygo();"> </BODY></LEFT></HTML>

  • ネスケでdocument.write

    質問があります。 <html> <head> <script type="text/javascript"> <!-- str = "a"; function func(){ document.open(); document.write( str ); document.close(); } --> </script> </head> <body onload = "func()"> </body> </html> というソースを組んだのですが、IE6なら正常に表示できたのにNetscape7だと表示されませんでした。 document.write("a")と記述すると表示できたのですが・・・。 本来組みたいソースは上記のstrが長文かつ多用するために簡略化したいのですが、何か良い方法はあるでしょうか?