JavaScriptで動的にSELECTのOPTIONの個数を変更すると垂れ下がってくれない?(NN)
[上に]
[前に]
[次に]
アイモモ
2000/01/22(土) 23:32:37
いつもお世話になっております。
JavaScriptで日付を選択するものを作成しました。↓参照。
NNだとプルダウンが垂れ下がって(?)くれないときの方が
多いのですが(なぜかたまに垂れ下がる・・・)
どうしてでしょうか?
ちょっと長いですが、ソースをのせますのでよろしくお願いします。
動作環境:OS WindowsNT NN4.6 IE5.0
----------------------------------------------------------
<HTML><HEAD><TITLE>test</TITLE></HEAD><BODY>
<FORM NAME="menu" ACTION="taim.cgi" METHOD="get">
日にち:<SELECT NAME="year" onChange="year_change_hook();">
<OPTION>1994 <OPTION>1995 <OPTION>1996 <OPTION>1997
<OPTION>1998 <OPTION>1999 <OPTION>2000 <OPTION>2001 </SELECT>
<SELECT NAME="month" onChange="month_change_hook();">
<OPTION>1 <OPTION>2 <OPTION>3 <OPTION>4 <OPTION>5 <OPTION>6
<OPTION>7 <OPTION>8 <OPTION>9 <OPTION>10 <OPTION>11 <OPTION>12 </SELECT>
<SELECT NAME="day"></SELECT>
<SCRIPT LANGUAGE="javascript">
<!--
var i;
var fm = document.menu;
set_day(31);
//日数を設定する
function set_day(a){
var now_length = fm.day.length;
fm.day.length = a;
for (i = now_length; i < a; i++) fm.day.options[i].text = i + 1;
fm.day.options[0].selected = true;
for (i = 1; i < a; i++) fm.day.options[i].selected = false;
}
//年を変更したとき
function year_change_hook(){
var m = fm.month.options[fm.month.selectedIndex].text;
var y = fm.year.options[fm.year.selectedIndex].text;
if (m == 2) set_day(get_days(y, m));
}
//月を変更したとき
function month_change_hook(){
var m = fm.month.options[fm.month.selectedIndex].text;
var y = fm.year.options[fm.year.selectedIndex].text;
set_day(get_days(y, m));
}
//日数を決定する
function get_days(y, m){
if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12) return 31;
else if (m == 4 || m == 6 || m == 9 || m == 11) return 30;
else {
if (!(y % 4) && ((y % 100) || !(y % 400))) return 29;
else return 28;
}
}
//--> </SCRIPT></FORM></BODY></HTML>
Mugi
[E-Mail]
[HomePage]
2000/01/23(日) 00:10:35
リサイズしないとダメなようです。
ねすけのバグですね。
僕はこういう風にresizeByを使って回避しています。
http://hp.vector.co.jp/authors/VA013453/js/selectbox.htm
アイモモ
2000/01/23(日) 13:19:48
[[解決]]
Mugiさん、いつもありがとうございます。m(_ _)m
set_day() のところに resizeBy使わせていただきました。
解決です!
[上に]
[前に]
[次に]