• ベストアンサー

宣言されていない「ad」・・・?????

時間によってリンク先が変わるJavaScriptを使ったページを作りました。・・・が、どうもうまく作動しません。 出る表示は、「ad」は宣言されていません、というもの。 こ、これは一体何なんでしょう?! デバックすることもできません。 <SCRIPT LANGUAGE="JavaScript"> <!-- d=new Date(); h=d.getHours(); // 0~4時の間の転送先アドレス if (h >= 0 && h <= 4) { ad = "http://"; } 略 location.href=ad; // --> </SCRIPT> というものです。 どうすればいいんでしょうか?! XPに変えてから、JAVAがらみのトラブルが多くて、参ってます・・・。助けてください。教えてください!!よく判ってないので、ぜひ!!

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

  • ベストアンサー
  • ittochan
  • ベストアンサー率64% (2667/4137)
回答No.2

ad = "http://o(´^`)o ウー"; if (h >= 0 && h <= 4) { ad = "http://ヘ(・、ヘ)ホイホイ(ノ、・)ノホイホイ"; } こうすると、 条件がfalseの時は ad = "http://o(´^`)o ウー"; になるので、 >「ad」は宣言されていません は出ないでしょう。 もしくは、 if (h >= 0 && h <= 4) { ad = "http://ヘ(・、ヘ)ホイホイ(ノ、・)ノホイホイ"; } else { ad = "http://o(´^`)o ウー"; } これでもOKです。

gen55
質問者

お礼

二度にわたっての、詳しい回答、ありがとうございました! すこし判らないところがあるのですが・・・ falseにしても、trueであったとしても、その時間帯にはこのページに、と思った場合は、「o(´^`)o ウー」(←可愛いです(笑))「ヘ(・、ヘ)ホイホイ(ノ、・)ノホイホイ」どちらにも、同じアドレスを入れておくべきなんでしょうか。 同様に、elseで分岐させた場合にも、同じことが言える、ということでしょうか・・??? すみませんが、教えていただけると嬉しいです!!

その他の回答 (2)

noname#3345
noname#3345
回答No.3

原因は先のお二方が書かれているとおりです。 if文に入らなかった場合のエラーですね。 elseで分岐してもいいですが、functionの最初に var ad=""; と、変数をあらかじめ初期化して置いた方が簡単ですよ。 変数はあらかじめ初期化しておくクセをつけておく方がいいかもしれません。

  • ittochan
  • ベストアンサー率64% (2667/4137)
回答No.1

if (h >= 0 && h <= 4) { ad = "http://"; } ここなんですが、 (h >= 0 && h <= 4) の条件がtrueなときに ad = "http://"; が実行されます。 adはこの時に宣言されているので、 条件がfalseのときは、宣言されないんですね。

gen55
質問者

お礼

ご回答ありがとうございました!

関連するQ&A