OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
締切り
済み

Select ボックスで選択した値を渡して、同一ページに再表示するには?

  • すぐに回答を!
  • 質問No.160019
  • 閲覧数1725
  • ありがとう数4
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 64% (127/196)

JavaScriptで、年/月をSelectボックスで選択し、
その年/月のカレンダーを同一ページ内に表示したいのですが、
セレクトボックスで値を選択後、カレンダーを同一ページに
表示させる際、再表示時にセレクトボックスが初期状態に
戻ってしまいます。
そのため、カレンダーも初期状態のままのカレンダーのまま変更されません。

どうしたら、値を渡して再表示できるのでしょうか?
方法としましては、自分自身を再呼び込みするといった感じで
しか方法が見つかりませんが、別の方法があれば、それでも結構です。
初心者なもので、なにとぞ、よろしくお願いいたします。
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全3件)

  • 回答No.1

JavaScriptだけで、というのがよくわからないのですが・・・。 セレクトボックスの値がクリアされると言うことは、フォームのアクションかなにかで、再読込してるってことですよね? CGIを使わずに、JavaScriptだけで値の持ち回しをされたいということであれば、難しいかと思います。 もしやるとしたら、クッキーを使う方法でしょうか。 セレクトボックスを選択したときに、Cookieをセットし ...続きを読む
JavaScriptだけで、というのがよくわからないのですが・・・。
セレクトボックスの値がクリアされると言うことは、フォームのアクションかなにかで、再読込してるってことですよね?
CGIを使わずに、JavaScriptだけで値の持ち回しをされたいということであれば、難しいかと思います。
もしやるとしたら、クッキーを使う方法でしょうか。

セレクトボックスを選択したときに、Cookieをセットして、次に表示するときにCookieの値を拾ってきて、それと同じ値を持つOptionにSelectedをセットし、カレンダーを表示する・・・といった感じです。
お礼コメント
PAMchan

お礼率 64% (127/196)

JavaScript だけでは、難しいのですね。
それだけ、分かっただけでも進歩のようなきがします。
ありがとうございました。

Cookie でトライしてみようかと思います。
投稿日時 - 2001-10-31 09:40:20
  • 回答No.2
レベル10

ベストアンサー率 50% (72/143)

こんばんはPAMchanさん、xruzです。 >再表示時にセレクトボックスが初期状態に戻ってしまいます 再表示しているから、そうなりますね。 >自分自身を再呼び込みするといった感じで http://oshiete1.goo.ne.jp/kotaeru.php3?q=159215 が使えると思いますが。。。。 とりあえず再表示せずに表示するサンプルを載せておきます(Ie5.5s ...続きを読む
こんばんはPAMchanさん、xruzです。
>再表示時にセレクトボックスが初期状態に戻ってしまいます
再表示しているから、そうなりますね。
>自分自身を再呼び込みするといった感じで
http://oshiete1.goo.ne.jp/kotaeru.php3?q=159215
が使えると思いますが。。。。

とりあえず再表示せずに表示するサンプルを載せておきます(Ie5.5sp2のみ動作確認)

<html>
<head>
<title>Calender</title>
</head>
<script language="JavaScript1.3">
<!--
var myDate=new Date();
function setLst() {with(document.frm.lst){
options.length=12;myDate.setDate(1);
for(var i=0;i<12;i++){
options[i].text=options[i].value=myDate.getFullYear()+"/"+(myDate.getMonth()+1);
myDate.setMonth(myDate.getMonth()+1);}
options[0].selected=true;wtCal(options[selectedIndex].value);}}
function wtCal(cym) {oTR=document.all('tbl').childNodes[0].childNodes;
for(var i=1;i<oTR.length;i++) for(var j=0;j<7;j++)
oTR[i].childNodes[j].innerText="";var lym=new Array();lym=cym.split("/");
myDate.setDate(1);myDate.setMonth(lym[1]-1);myDate.setFullYear(lym[0]);
for(var i=1;i<oTR.length;i++) { var k=(i>1)?0:myDate.getDay();
for(var j=k;j<7;j++) {var DD=myDate.getDate();oTR[i].childNodes[j].innerText=DD;
myDate.setDate(DD+1);if(lym[1]!=(myDate.getMonth()+1)) return;}}}
//-->
</script>
<body onLoad="setLst()">
<form method="post" name="frm">
<select name="lst" size="1" onChange="wtCal(this.options[this.selectedIndex].value);">
</select>
</form>
<table id="tbl" border="1">
<tr><th>Sun</th><th>Mon</th><th>Tue</th><th>Wed</th><th>Thu</th><th>Fri</th><th>Sat</th></tr>
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
</table>
</body>
</html>

がんばってくださいね(きたないソースでごめんなさい)。
補足コメント
PAMchan

お礼率 64% (127/196)

回答ありがとうございます。
回答くださいました、ソースで確認したところ、まさにこれです!
すごい! と思いましが、どうしてもソースが分かりません。

参考ページを見てみましたが、フレームについてが掲載されていました。
フレームを使用しているのでしょうか?document.frm.lstとあるし・・・
フレームを使用しているとして、ページは一つでもOKなのでしょうか?
フレームがあるとすると、ページが複数必要なのでは?と思うのです。

大変お手数ですが、大まかで結構ですので、もう少し説明をいただけますでしょうか?
本当に申しわけございません。 よろしくお願いいたします。
m(_ _)m
投稿日時 - 2001-10-31 09:40:30
  • 回答No.3
レベル10

ベストアンサー率 50% (72/143)

こんにちはPAMchanさん、xruzです。 >どうしてもソースが分かりません。 function setLst() はリストボックスにoptionをセットしています。 function wtCal(cym) はyyyy/mm形式で受けたcymをもとにTableへ日付をセットしています。 (これ以上の説明はとんでもないことになりますので割愛させていただきます) 掲載のソースはフレームを ...続きを読む
こんにちはPAMchanさん、xruzです。
>どうしてもソースが分かりません。
function setLst() はリストボックスにoptionをセットしています。
function wtCal(cym) はyyyy/mm形式で受けたcymをもとにTableへ日付をセットしています。
(これ以上の説明はとんでもないことになりますので割愛させていただきます)
掲載のソースはフレームを使用していませんし再読込みもしていません。

>参考ページを見てみましたが、フレームについてが掲載されていました。
フレームについて書いてありますがフレームでなくても使えるテクニックです。
リストボックスで得た値をURLの後ろにつけて自分へリンクし、その値を読み込んで
カレンダーをdocument.writeすればできると思います。

ただフレーム使用したほうが楽だと思いますが使えない場合もありますので単独の場合のソース例を掲載いたしました。

がんばってくださいね。
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ