很怪的javascript问题

efan 2000-10-17 09:15:00
在网页上有三个下拉列表框,分别代表年月日,当年月改变时,日期值相应变化,除8,9月其他月份都正常,不知何故?以下是HTML,各位大侠帮帮忙。

<html>

<head>
<title>返回主页</title>
<base target="main">
</head>

<body topmargin="0" leftmargin="0" bgcolor="#F2EFAE">
<script language="JavaScript">
<!--
compatibleBrowser = testBrowserVersion()
option0 = new Option("01", "01")
option1 = new Option("02", "02")
option2 = new Option("03", "03")
option3 = new Option("04", "04")
option4 = new Option("05", "05")
option5 = new Option("06", "06")
option6 = new Option("07", "07")
option7 = new Option("08", "08")
option8 = new Option("09", "09")
option9 = new Option("10", "10")
option10 = new Option("11", "11")
option11 = new Option("12", "12")
option12 = new Option("13", "13")
option13 = new Option("14", "14")
option14 = new Option("15", "15")
option15 = new Option("16", "16")
option16 = new Option("17", "17")
option17 = new Option("18", "18")
option18 = new Option("19", "19")
option19 = new Option("20", "20")
option20 = new Option("21", "21")
option21 = new Option("22", "22")
option22 = new Option("23", "23")
option23 = new Option("24", "24")
option24 = new Option("25", "25")
option25 = new Option("26", "26")
option26 = new Option("27", "27")
option27 = new Option("28", "28")
option28 = new Option("29", "29")
option29 = new Option("30", "30")
option30 = new Option("31", "31")
function testBrowserVersion() {
if (navigator.appVersion.substring(0, 2) == 2.0){
return false
}
else {
appVerionNum = navigator.appVersion.substring(0, 3)
if ((navigator.appName == "Netscape") && (appVerionNum >= 3.0)) {
return true ;
} else if(appVerionNum >= 4.0) {
return true ;
} else {
return false ;
}
}
}
function numberofdays(imonth,iyear){
var numdays=new Array(31,28,31,30,31,30,31,31,30,31,30,31)
var nod=numdays[imonth-1]
if (imonth==2 && iyear %4 ==0) nod=29
return nod
}

function changeselect(myform)
{
if (compatibleBrowser){
var zz
zz=numberofdays(parseInt(D3.value),parseInt(D2.value))
//zz=GetDaysInMonth(parseInt(D3.value),parseInt(D2.value))
var m = D4.options.length
if (m!=zz) {
for (var i=m ; i >=0 ; i--)
{
D4.options[i]= null
}
for (var i=0; i <zz; i++)
{
eval("D4.options[i]=option" + i)
}
}
}
}
//-->
</script>


<table border="0" cellpadding="0" cellspacing="0" width="96%" height="15"
bgcolor="#9CE368">
<tr>
<td width="18%" height="15" align="center"></td>
<td width="26%" height="15" align="center"></td>
<td width="9%" height="15" align="center"></td>
<td width="14%" height="15" align="center"></td>
<td width="11%" height="15" align="center"><select name="D2"
onchange="changeselect(this.form)" size="1" style="font-size: 12pt">
<option value="2000">2000</option>
<option value="2001">2001</option>
</select></td>
<td width="4%" height="15" align="center"><span style="font-size: 15pt">年</span></td>
<td width="7%" height="15" align="center"><span style="font-size: 15pt"><select name="D3"
onchange="changeselect(this.form)" size="1" style="font-size: 12pt">
<option value="01">01</option>
<option value="02">02</option>
<option value="03">03</option>
<option value="04">04</option>
<option value="05">05</option>
<option value="06">06</option>
<option value="07">07</option>
<option value="08">08</option>
<option value="09">09</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
</select></span></td>
<td width="4%" height="15" align="center"><span style="font-size: 15pt">月</span></td>
<td width="8%" height="15" align="center"><span style="font-size: 15pt"><select name="D4"
size="1" style="font-size: 12pt">
<option value="01">01</option>
<option value="02">02</option>
<option value="03">03</option>
<option value="04">04</option>
<option value="05">05</option>
<option value="06">06</option>
<option value="07">07</option>
<option value="08">08</option>
<option value="09">09</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
</select></span></td>
<td width="5%" height="15" align="center"><span style="font-size: 15pt">日</span></td>
<td width="40%" height="15" align="center"></td>
</tr>
</table>

</body>
</html>

...全文
84 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Edward 2000-10-17
  • 打赏
  • 举报
回复
(edyang 如有所悟的自言自语道:)
正如一位网友所说:CSDN 乃“鸡肋”!实在是神来妙语也!
Edward 2000-10-17
  • 打赏
  • 举报
回复
呵呵,你发现了 JavaScript 的一个大 BUG。
我在 IE 4.0/5.0/Netscape 4.72 上做实验,parseInt("08")/parseInt("09") 的结果都是 0!
这就是为什么只有 8/9 月份不正确的原因。

解决办法:去掉 changeselect 函数中的 parseInt;或者将 D3 中的 value 中的前面多余的 0 去掉。

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧