日付指定で違うHTMLを表示するには?

[上に] [前に] [次に]
純兵衛 [E-Mail] 1999/11/15(月) 12:35:14
日付を指定して違うHTMLを表示させたいのですが、こういうことってできるのでしょうか?11月からA.html、12月からはB.htmlのように。
よろしくお願いします。

miyu 1999/11/15(月) 15:01:17
Perlで書かれたCGIならばこんなかんじでしょうか?

($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst)
  = localtime();
$mon++;
if(    $mon == 11 ){
print "Location: A.html" . "\n\n";
}
elsif( $mon == 12 ){
print "Location: B.html" . "\n\n";
}

ウンジャマラミー 1999/11/15(月) 17:56:26
JavaScriptでやるなら...
function func(){
   today = new Date() ;
   m = today.getMonth() + 1 ;
   if( m == 11 ) location.href='A.html';
   if( m == 12 ) location.href='B.html';
}

純兵衛 [E-Mail] 1999/11/15(月) 18:12:43
早速の回答ありがとうございます。
日にちまで指定するにはどう書けばよいのでしょうか?
たびたびの質問ですみません。

ウンジャマラミー 1999/11/15(月) 18:56:37
>日にちまで指定するにはどう書けばよいのでしょうか?
最初っからそう書いてくれぇ〜い。
nov = new Array("A1.html","A2.html"...."A30.html") ;     //追加
dec = new Array("B1.html", "B2.html"...."B31.html") ;    //追加
  :
d = today.getDate() ;                                    //追加
  :
if( m == 11 ) location.href=nov[d-1];                    //変更
if( m == 12 ) location.href=dec[d-1];                    //変更
# 動くかどうか試してね。(試してないから)

って、その前に解答にあるスクリプトは試したのかな?
でもって自分なりに色々と試してはみたのかな?
# 試してたらごめんなさい。

まぁそれはさておき、11月と12月で、
日付別にすると61種類あるってことですかね?
もし、メッセージが1行違うだけとかだったら、別な方法考えたほうが良いかもね。

#1月から指定するにはどうしたら...なんて質問は...まさかね。 (^^;;

純兵衛 [E-Mail] 1999/11/17(水) 20:51:17
いろいろ発言しておきながら、説明不足で分けわかんなくなってしまいました。ごめんなさい。CGIは全く分からないのでjavaでできるようにしたいです。もう1回詳しい説明をお聞きください。
私がやろうとしてるのは、フレームページで左フレームのA.htmlにあるリンクボタンを押したとき、右フレームにB.htmlが表示される。これを例えば12月20日からそのリンクボタンを押したとき、C.htmlが表示されるようにしたいのです。
ウンジャマラミーさんの回答からこう書いてみたのですが、記述場所が分からなくて勝手に記述してエラーになってしまいます。
<SCRIPT LANGUAGE="JavaScript">
<!--
function func(){
nov = new Array("B.html") ;
dec = new Array("A.html") ;    
today = new Date() ;
   m = today.getMonth() + 1 ;
  d = today.getDate() ;
   if( m == 11 ) location.href=nov[d-1];
   if( m == 12 ) location.href=dec[d-1];
}
// -->
</SCRIPT>
なんですけど。

dec = new Array("B1.html", "B2.html"...."B31.html") ;
のhtmlの指定を1つ目からB.htmlを書いていって、20つ目にC.htmlを書かないといけないんでしょうか?
超初心者というより、よく分かってないものですみません。
よろしくお願いします。

ウンジャマラミー 1999/11/18(木) 10:06:07
>if( m == 11 ) location.href=nov[d-1];
>if( m == 12 ) location.href=dec[d-1];
dは日付で、今日なら18です。
配列は0から始まるのでマイナス1しています。
ということは、nov配列の[17]番目を参照しようとしています。
しかし、この場合だと配列は1個しかないですよね?
だからエラーになるんです。

>dec = new Array("B1.html", "B2.html"...."B31.html") ;
>のhtmlの指定を1つ目からB.htmlを書いていって、20つ目にC.htmlを書かないといけないんでしょうか?
そうなんですけど、日付毎に毎回変えるのかと思ったので、こんな方法を書きました。
>これを例えば12月20日からそのリンクボタンを押したとき、C.htmlが表示されるようにしたいのです。
のであれば、配列を使わなくても、
<SCRIPT LANGUAGE="JavaScript">
<!--
function func(){
today = new Date() ;
   m = today.getMonth() + 1 ;
   d = today.getDate() ;
   if( m == 12 && d >= 20 ) location.href=C.html
   else location.href=B.html ;
}
// -->
</SCRIPT>
で行けるんじゃないでしょうか?
(試してない)
#おまけ。
年が明けたらB.htmlに戻すのかな?
その場合、
y = today.getYear();  //追加
if( y<100 && m==12 && d>=20 ) location.href=C.html  //変更
(これまた試してない)

純兵衛 [E-Mail] 1999/11/25(木) 07:46:04
ウンジャマラミーさんこんにちは。
レスが遅くなりました。すみません。
試してみましたが、動かないようです。
スクリプトの記述はリンクボタンを押したとき表示される、B.htmlに記述しました。そして、d>=20の部分を変えて、それぞれやってみましたが、変化ありません。度々すみませんが、よろしくお願いします。

純兵衛 [E-Mail] 1999/11/25(木) 09:05:39
ウンジャマラミーさんこんにちは。
レスが遅くなりました。すみません。
試してみましたが、動かないようです。
スクリプトの記述はリンクボタンを押したとき表示される、B.htmlに記述しました。そして、d>=20の部分を変えて、それぞれやってみましたが、変化ありません。度々すみませんが、よろしくお願いします。

初級者 1999/11/25(木) 10:08:10
>スクリプトの記述はリンクボタンを押したとき表示される、B.htmlに記述しました。
リンクが書かれているA.htmlに記述したほうが良いと思います。
そして、リンク先を href="javascript:func();"と指定すれば良いのではないのでしょうか?

ウンジャマラミー 1999/11/25(木) 12:46:24
12月20以前ならA.html→B.html
12月20以降ならA.html→C.html
こうしたいんですよね?
だったら、初級者 さんも書かれてますが、このスクリプトはA.htmlに記述しなければ
意味ないです。

>if( m == 12 && d >= 20 ) location.href=C.html
最後のセミコロンが抜けてました。
if( m == 12 && d >= 20 ) location.href=C.html;
です。

初級者 1999/11/25(木) 14:36:53
補足します。
フレーム分けしているのであれば
location.href
というところを、
parent.行先フレーム名.location.href
と変更したほうが確実かも。

純兵衛 [E-Mail] 1999/11/27(土) 20:48:07
ウンジャマラミーさん、初級者さんこんにちは。
試してみましたが、どうもうまくいきません。エラーとして「Cが宣言されていません。」とでます。
縦分割フレームを使用し、左側のA.htmにリンクを書き、右側にB.htm、C.htmを表示させようとしています。左のフレーム名はaです。右側に以下のスクリプトを記述しました。

<BODY>
<href="javascript:func();">リンク
<SCRIPT LANGUAGE="JavaScript">
<!--
function func(){
today = new Date() ;
   m = today.getMonth() + 1 ;
   d = today.getDate() ;
   if( m == 11 && d >= 29 ) parent.a.location.href=C.htm ;
   else parent.a.location.href=B.htm ;
}
// -->
</SCRIPT>
</BODY>

これでおかしいところはありますか?
よろしくお願いします。

純兵衛 [E-Mail] 1999/11/27(土) 20:50:16
訂正です。記述したのは左フレームのA.htmです。

初級者 1999/11/29(月) 08:25:55
スクリプトを見ていたのに気づきませんでした。
> parent.a.location.href=C.htm ;
URLは文字列なので
parent.a.location.href="C.htm";
と記述します。

初級者 1999/11/29(月) 09:12:16
1つ忘れていました。
> parent.a.location.href
右側(表示させるほう)のフレーム名をparent.のあとに指定してください。

純兵衛 1999/11/29(月) 12:43:58
[[解決]]
解決しました。感謝感激です。
いろいろ教えていただき本当にありがとうございました。

[上に] [前に] [次に]