//开始日期默认为公示结束日期的下一个月的1号
function startday(){
var end;//开始日期
var mm;
var yyyy;
var dd;
var mm1;
var yyyy1;
var start;
end = form.jgssj.value;//得到开始日期
mm = end.substring(5,7);//得到月
yyyy = end.substring(0,4);//得到年
         dd = end.substring(8,10);
mm1= parseInt(mm)+1;//得到下一个月

if (mm1>12){
yyyy1 = parseInt(yyyy)+1;
mm1 = 1;
}
else
yyyy1 = yyyy;
if (mm1<10) {
mm1 = "0"+mm1; 
} start= yyyy1+"-"+mm1+"-01";
form.jjzrq.value= start;
}
当end的月份值小于等于7时,都能得到正确的结果,当end大于7时就会成1月了。
比如end=2009-05-23,正确得到2009-06-01
当end=2009-08-12时却会得到2009-01-01

解决方案 »

  1.   

    parseInt函数加上第二个参数:进制
    比如parseInt(mm)====》parseInt(mm,10)
      

  2.   

    alert(parseInt("08"));//0
    alert(parseInt("09"));//0
    问题就出现在这里
    alert(parseInt("08",10));//8
    alert(parseInt("09",10));//9
      

  3.   

    parseInt对于 0开头的字符串,且不是0x,当作了八进制进行处理,碰到8,就当作是非法字符中断了处理,所以结果就是0.
    alert(parseInt("08"));//0 
    alert(parseInt("09"));//0 
    等价于
    alert(parseInt("08",8));//0 
    alert(parseInt("09",8));//0
      

  4.   

    parseInt("08",10);明白什么意思了,