
プルダウンメニューで、本日から4日後 から 1か月先までの日付をYYYY/MM/DDの形式で生成して表示されたいのですが、それをvalueに入れる方法が分かりません。
下記までは書いてみたんですが、
<option value="???">のところに何と書いていいのか分からなくなってしまいました。。
for文などループ処理で書いた方がキレイだとは思いますが、
イマイチ分からなかったので、併せて御教授いただければと思います。
<script type="text/javascript">
document.write(AddDate(+4)+'~'+ AddDate(+30));
function AddDate( n ){
var day = new Date( (new Date).getTime()+n*24*60*60*1000);
return (day.getFullYear() + "/" + (day.getMonth() + 1) + "/" + day.getDate());
}
</script>
<select name="delidate">
<option value=""><script type="text/javascript">document.write(AddDate(+4));</script></option>
<option><script type="text/javascript">document.write(AddDate(+5));</script></option>
<option><script type="text/javascript">document.write(AddDate(+6));</script></option>
<option><script type="text/javascript">document.write(AddDate(+7));</script></option>
<option><script type="text/javascript">document.write(AddDate(+8));</script></option>
<option><script type="text/javascript">document.write(AddDate(+9));</script></option>
<option><script type="text/javascript">document.write(AddDate(+10));</script></option>
<option><script type="text/javascript">document.write(AddDate(+11));</script></option>
<option><script type="text/javascript">document.write(AddDate(+12));</script></option>
<option><script type="text/javascript">document.write(AddDate(+13));</script></option>
<option><script type="text/javascript">document.write(AddDate(+14));</script></option>
<option><script type="text/javascript">document.write(AddDate(+15));</script></option>
<option><script type="text/javascript">document.write(AddDate(+16));</script></option>
<option><script type="text/javascript">document.write(AddDate(+17));</script></option>
<option><script type="text/javascript">document.write(AddDate(+18));</script></option>
<option><script type="text/javascript">document.write(AddDate(+19));</script></option>
<option><script type="text/javascript">document.write(AddDate(+20));</script></option>
<option><script type="text/javascript">document.write(AddDate(+21));</script></option>
<option><script type="text/javascript">document.write(AddDate(+22));</script></option>
<option><script type="text/javascript">document.write(AddDate(+23));</script></option>
<option><script type="text/javascript">document.write(AddDate(+24));</script></option>
<option><script type="text/javascript">document.write(AddDate(+25));</script></option>
<option><script type="text/javascript">document.write(AddDate(+26));</script></option>
<option><script type="text/javascript">document.write(AddDate(+27));</script></option>
<option><script type="text/javascript">document.write(AddDate(+28));</script></option>
<option><script type="text/javascript">document.write(AddDate(+29));</script></option>
<option><script type="text/javascript">document.write(AddDate(+30));</script></option>
</select>
分かり難く申し訳ないですが、宜しくお願い致します。
No.3ベストアンサー
- 回答日時:
No2です。
初期状態の指定(HTMLでのselected)は、elm.options[index].selected = trueなどで設定しておくのが正解かも知れませんが、指定しないとブラウザ側で最初のオプションを自動的に表示するようになっているみたいですね。
いずれにしても、リストの最初がデフォルトになっているほうがいいでしょうから・・・
<案1>
スクリプトでループで書き出す前にoption[0]にデフォルトの内容を設定しておく。
(方法はループ内で設定しているのと同じです。No1様が上げられている参考サイトも参考にしてください。)
<案2>
HTMLのオプションの最初に
<option value="default" selected>-------</option>
などをいれておいて、スクリプトでの書き換えはオプションの2番目からにする。
スクリプトがオフの場合のことも考えると、案2が良いのではと思います。
この回答への補足
何度も申し訳ありません..
私も案2が良いと思い、オプションの2番目からスクリプトの書き換えをしようと思い、#1様に教えてもらったサイトなど参考にして色々と試しているんですがうまく表示されません。。
伝えられていた仕様が変更になってしまったので、また別の質問を設定して、改めてご質問しようと思います。
4日以降ではなくて、4営業日(土日祝日休み)以降の日付で出力するとの事で変更になりました!
またデフォルトで
<option value="default" selected>-------</option>
が表示される形を希望しています。
またご機会がありましたら何卒よろしくお願いします。
No.2
- 回答日時:
とりあえず、こんな感じ?
<html>
<head>
<script type="text/javascript">
window.onload = function() {
var d, str, elm = document.getElementById('delidate');
var day = new Date();
day.setMilliseconds(4*24*60*60*1000);
for (d=0; d<26; d++) {
str = day.getFullYear() + '/' + (day.getMonth() + 1) + '/' + day.getDate();
elm.options[d] = new Option(str, str);
day.setMilliseconds(24*60*60*1000);
}
}
</script>
</head>
<body>
<select name="delidate" id="delidate">
<option value="4日後">4日後</option>
<option value="5日後">5日後</option>
・・・・・・
<option value="30日後">30日後</option>
</select>
</body>
</html>
HTML内のoptionタグを省略しても動きますが、ユーザがjavascriptをオフにしているとオプションが何も表示されなくなってしまうので、デフォルトとして4日後などの表示をするようにしています。
(日付には変換されませんが、表示はされる → 後の処理に影響しますが…)
想像ですが、この結果を処理するものをサーバ側のCGIやphpなどで用意なさっていると思いますが、どうせなら、このセレクタの出力もサーバサイドの処理で出力した方がよいのではないでしょうか。
この回答への補足
ご回答ありがとうございます!
まさにその通りです。とても助かります。ありがとうございました!
>このセレクタの出力もサーバサイドの処理で出力した方が
おっしゃる通りサーバー側で出力できれば良いのですがASPで融通のきかないシステムなのでJsで実装しようと思っております。
一点だけ追加でお願いがあるのですが、、
上記のサンプルで頂いたコードだと、デフォルトは4日後の日付ですが
--------(点線)
をデフォルト表示させる事は可能でしょうか??
もしfujillin様が宜しければ教えてください。
宜しくお願いいたします。
No.1
- 回答日時:
javascript DOM関数 を調べてみるとよいと思います。
(参考)
http://f32.aaa.livedoor.jp/~azusa/?t=js&p=select …
そこにずばりのサンプルがあります。
http://f32.aaa.livedoor.jp/~azusa/?t=js&p=select …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JavaScriptが有効ならA、無効ならB
-
ボタンのID名を取得するには?
-
JavaScriptからVBScriptの呼び...
-
javascriptからウィンドウを開...
-
ハイパーリンクに下線を表示す...
-
ウインドウの後ろに隠れている...
-
<a href="#" …>の意味を教えて...
-
bodyにidをつける理由は何ですか?
-
html メールリンクにて自動ファ...
-
undefinedが表示されてしまう
-
htmlファイルを開いた時の画面...
-
HP上のPDFファイルを保存禁止...
-
JavaScript 配列とiframe
-
別ファイルのfunctionの読み込み方
-
よろしくお願いします。
-
JavaScriptを有効にする文言を...
-
マウスオーバーでリンク先サム...
-
ASP.NETでjsファイルのリンクの...
-
スクロールして移動を1回で終了...
-
乱数を一定時間毎に表示させた...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
動的生成したscriptタグが実行...
-
'<SCR' + 'IPT>' なぜ分割?
-
HTML CSS JavaScript
-
スクロールせずに見えるコンテ...
-
¥マークの検索について
-
JavaScriptのランダム広告で質...
-
UAによるリダイレクト
-
IEでiframe内のcookieを保持
-
selectタグで日付を生成
-
location.hrefが動かない・・・
-
document.getElementById
-
ホームページを見る度にTOP画面...
-
document.writeの文字列が実行...
-
16進n桁の文字列変換の方法は?
-
「document.images.src =」につ...
-
ランダム音声と正解・不正解の表示
-
1から100までの平方根を表示す...
-
読み込むたびに画像を順番に表...
-
JSによるリンク先の値の取得
-
足跡を付けたい
おすすめ情報