2010-09-27 122 views
0

HI環我在IE8測試時,這個JavaScript函數問題與IE8

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; 
      }     
      }     
     } 

問題是功能不會進入,如果循環。所以只有第一次測試將被打印。 第二次測試將不會被打印。其他瀏覽器一切正常。如何解決這個問題?

回答

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'); 
+0

感謝它的工作! – cyberfly 2010-09-27 05:59:36

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; 
    }     
    }     
} 
+0

實際結構是正確的。對不起,似乎我錯了,而簡化代碼在這個論壇要求。 – cyberfly 2010-09-27 04:38:09

+0

np,我們都會不時地這樣做:) – 2010-09-27 05:29:44