IE8上的循环问题

时间:2010-09-27 04:18:51

标签: javascript jquery

嗨我有这个javascript函数

function test(){
            var count = 0;
            var date1 = $('#alternatestartdate').val();
            var date2 = $('#alternateenddate').val();                
            var startDate = new Date(date1);
            var endDate = new Date(date2);

            var loop = true;
            while (loop)
            {
            $('#pa').append('first test');                
            if (startDate<=endDate)
            {
            $('#pa').append('second test');
            loop = true;                
            }
            startDate.setDate(startDate.getDate()+1);
            }
            else
            {
            loop = false;
            }                
            }                
        }

问题是在IE8中测试时函数不会进入if循环。因此,只会打印第一次测试第二次测试将不会被打印。其他浏览器都工作正常。如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

问题可能是IE没有采用您从输入中获得的日期格式 - 因为您的代码在其他浏览器上正常运行 - 。

为了避免这种情况,我建议你解析日期字符串,提取它的数字部分,然后使用Date constructor

Date构造函数可以使用以下参数

new Date(year, month, day, hours, minutes, seconds, ms);

dayhoursminutessecondsms可选。

但你应该记得从月份数中减去1,因为它们是从0开始的(0 = 1月,2 = 2月,... 11 = 12月)。

你可以使用我之前做过的this one这样的函数,它可以完成所有工作,你可以指定一种格式来解析你的日期,例如:

var date = parseDate('09-26-2010', 'mm-dd-yyyy');

答案 1 :(得分:0)

你检查了你的代码结构......看来你的其他人没有if。

功能测试()       {         var count = 0;         var date1 = $('#alternatestartdate')。val();         var date2 = $('#alternateenddate')。val();
        var startDate = new Date(date1);         var endDate = new Date(date2);

    var loop = true;
    while (loop)
    {
      $('#pa').append('first test');                
      if (startDate<=endDate)
      {
        $('#pa').append('second test');
        loop = true;                
      }
      startDate.setDate(startDate.getDate()+1);
    }
    else
    {
      loop = false;
    }                
  }                
}