if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
你所说的4月相应数值是3~~~~所以是31天~~~
所以把判断条件改下就可以~~~~~

解决方案 »

  1.   

    if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)你的判断条件出错~~
    4月对应的是3,所以是31天,而你用StartDay(this.options[this.selectedIndex].text)"索取的不是索引的值(3),而是响应的文本值(4),这样应该明白了吧~~~~~~~~~`
      

  2.   

    但是当onload后,选择月份时触发onchange,触发StartDay(month)也就是相同的函数,这下天数又正确了; 
    ---为什么在onload里不正确,但是onchange里正确呢
      

  3.   

    是触发相同的函数,可以你传输的值不同...........都跟你解释了,你有没有仔细看?
    onload的时候month是3(也就是我们说的4月,因为var month=now.getMonth();
    是从0-11而不是从1-12,这时候option的索引值也是从0开始的所以你判断的条件的4相当于5月.)
    你在触发onchange的时候,选用的是文本值this.options[this.selectedIndex].text,所以得到的4(如果你改成this.options[this.selectedIndex].value又和onload一样,是3)
      

  4.   

    <select id="Select2" style="width: 37px" onchange="StartDay(this.options[this.selectedIndex].text)">
    -----这里是没有错误的,运行也正确
    就是<body onload="StartDate()">
    这里的StartDate()运行不正确,也就是刚生成页面的时候,当4月时,显示未了31天,
    此后当选择任何一个月份时,在调用StartDate()显示均正确to gghunter :你明白我的意思吗
      

  5.   

    回的这么快。。
    好的,你的意思我知道了,
    你直接说“onload的时候month是3”不就完了,整了这么一大堆
    分给你