この人頭いいなと思ったエピソード

お世話になります。

現在htmlのselect、optionタグにて
1月から12月までを選択できるコンボボックスがあるのですが、
これを本日の取得日時によって選択できる項目を変えたいと考えて
おります。

具体的には、日にちが21日になった時点で当月の月を選択肢から
無くしたいのです。

恐れ入りますが、何卒宜しくお願い致します。

A 回答 (6件)

optionタグをJavaScriptでdocument.writeを使って


出力するようにするのよ。

今日の月・日は
http://www.nishishi.com/javascript/2007/now-date …
を参考にするといいわ。

あとはif文で判定するだけね。
    • good
    • 0
この回答へのお礼

早速のご回答どうもありがとうございます(^^

とりあえず、以下の通り作ってみたのですが、
リストに項目が追加されませんでした。

これはどこがいけないのでしょうか??
度々の質問恐縮なのですが、宜しくお願いします。


■ヘッダ部分↓↓
<SCRIPT LANGUAGE="JavaScript">
<!--
function dropdown()
{
var nowdate = new Date();
var mon = nowdate.getMonth() + 1; // 月
var date = nowdate.getDate(); // 日

document.write("<option value=""></option>");
if (mon != 1)
document.write("<option value='1'>1</option>");
else if (date < 21)
document.write("<option value='1'>1</option>");

if (mon != 2)
document.write("<option value='2'>2</option>");
else if (date < 21)
document.write("<option value='2'>2</option>");

if (mon != 3)
document.write("<option value='3'>3</option>");
else if (date < 21)
document.write("<option value='3'>3</option>");

・・・・・以下12まで同様に記述

}
//-->
</SCRIPT>

■ボディ部分↓↓↓
<SELECT NAME="start">
<script language="JavaScript" type="text/javascript">
<!--
  function dropdown();//ドロップダウンリストの変更
// -->
</script>

</SELECT> <FONT SIZE="2">月

お礼日時:2009/03/13 12:32

JavaScriptに書かれている


<%'----------------------------------
' ドロップダウンリストの制御
'------------------------------------'%>
のせいよ。
JavaScriptはこれをJavaScriptの構文とみなさないため
正常に動かないのよ。
    • good
    • 0
この回答へのお礼

やっとうまくいきました。
お礼が遅くない申し訳ありません。

初心者の私に最後までお付き合いいただき、大変ありがとうございました。m(_ _)m

お礼日時:2009/03/15 00:02

何も項目が追加されない・・・。


ダブルクォーテーションの件は直した?
できれば今のコードを見たいわ。

この回答への補足

<%@ EnableSessionState=False %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

<META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=Shift_JIS">
<TITLE>●●●</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!--

<%'----------------------------------
' ドロップダウンリストの制御
'------------------------------------'%>
function dropdown()

{
var nowdate = new Date();
var mon = nowdate.getMonth() + 1; // 月
var date = nowdate.getDate(); // 日

document.write("<option value=''></option>");

if (mon != 1)
document.write("<option value='1'>1</option>");
else if (date < 21)
document.write("<option value='1'>1</option>");

if (mon != 2)
document.write("<option value='2'>2</option>");
else if (date < 21)
document.write("<option value='2'>2</option>");

if (mon != 3)
document.write("<option value='3'>3</option>");
else if (date < 21)
document.write("<option value='3'>3</option>");

if (mon != 4)
document.write("<option value='4'>4</option>");
else if (date < 21)
document.write("<option value='4'>4</option>");

if (mon != 5)
document.write("<option value='5'>5</option>");
else if (date < 21)
document.write("<option value='5'>5</option>");

if (mon != 6)
document.write("<option value='6'>6</option>");
else if (date < 21)
document.write("<option value='6'>6</option>");

if (mon != 7)
document.write("<option value='7'>7</option>");
else if (date < 21)
document.write("<option value='7'>7</option>");

if (mon != 8)
document.write("<option value='8'>8</option>");
else if (date < 21)
document.write("<option value='8'>8</option>");

if (mon != 9)
document.write("<option value='9'>9</option>");
else if (date < 21)
document.write("<option value='9'>9</option>");

if (mon != 10)
document.write("<option value='10'>10</option>");
else if (date < 21)
document.write("<option value='10'>10</option>");

if (mon != 11)
document.write("<option value='11'>11</option>");
else if (date < 21)
document.write("<option value='11'>11</option>");

if (mon != 12)
document.write("<option value='12'>12</option>");
else if (date < 21)
document.write("<option value='12'>12</option>");

}
//-->

</SCRIPT>
</HEAD>

<BODY>
<FORM>
<SELECT NAME="start">
<script language="JavaScript" type="text/javascript">
<!--
dropdown();//ドロップダウンリストの変更(21日以降時)
// -->
</script>
</SELECT> <FONT SIZE="2">月

</FORM>
</BODY>
</HTML>

補足日時:2009/03/13 18:30
    • good
    • 0
この回答へのお礼

コードを添付致します。

お礼日時:2009/03/13 18:28

> if文


ゴメン。
>と<を見間違えたわ。
逆に考えてしまった。
大丈夫ね。

> まだ成功しません
どう成功しないの?
    • good
    • 0
この回答へのお礼

お世話様です。

>>どう成功しないの?

何も項目が追加されていないコンボボックスが
表示されてしまいます;

お礼日時:2009/03/13 16:59

ボディ部分の方


関数を呼び出すとき、
function
はいらないわ。

あとif文がおかしいわよ。
これだと21日になっても表示されてしまうわ。
    • good
    • 0
この回答へのお礼

>>ボディ部分の方関数を呼び出すとき、
>>functionはいらないわ。

了解です。

>>あとif文がおかしいわよ。
>>これだと21日になっても表示されてしまうわ。

よく分からないのですが、下の様に直せばいいのでしょうか?
else if (date < 21) ⇒ else if (date <= 20)

とりあえず、修正してみましたが、まだ成功しません(><;)

お礼日時:2009/03/13 14:40

タイプミスですね


document.write("<option value=""></option>");
の行
value="" ← ダブルクォーテーションになってます


#後は、JavaScriptがOFF環境のみに、1~12常時表示があるといいかも
    • good
    • 0
この回答へのお礼

ご指摘ありがとうございました。
ただ、この部分を修正してもまだうまくいきませんでした。

お礼日時:2009/03/13 13:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報