2013-10-16 158 views
3

我在ASP應用程序的工作,但我得到這個錯誤在IE 8:對象不支持在IE8此屬性或方法的JavaScript

消息:對象不支持此屬性或方法

線:216

字符:8

代碼:0

這是我的代碼:

$(function() { 
     Today = new Date; 
     Annee = Today.getFullYear() - 18 ; //this is a Line 216 
       PlageMois = Today.getMonth(); 
      Jour = Today.getDate() ;    
     //maxDate: new Date(new Date.getFullYear(), 1-1, 1),    
    $("#datepicker_Majeur").datepicker({ 

      monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug','Sep', 'Oct', 'Nov', 'Dec'], 
      dayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'], 
      dateFormat: 'mm/dd/yy', 

     //maxDate: new Date(1993, 1-1, 1), 
     maxDate: new Date(Annee, PlageMois, Jour), 
     showOn: "button", 
     buttonImage: "/images/img-calendar.gif", 
     buttonImageOnly: true 
    }); 
}); 
+0

'new Date'後面的括號是否可選? –

+0

試試「新日期()」而不是「新日期」 – noboundaries

+0

@MartinSmith:是的,令人驚訝的是,它們是。 –

回答

9

您的代碼屬於獵物​​,所以我懷疑Today是通過非JavaScript機制,不會讓你分配Date對象給它創造了一個全球性的存在。

你需要用關鍵字var聲明你的局部變量。我懷疑這會解決你遇到的問題。例如。 (注意第4行):

$(function() { 
    var Today = new Date; 
    var Annee = Today.getFullYear() - 18 ; //this is a Line 216 
    var PlageMois = Today.getMonth(); 
    var Jour = Today.getDate() ;    
    //maxDate: new Date(new Date.getFullYear(), 1-1, 1),    
    $("#datepicker_Majeur").datepicker({ 

     monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug','Sep', 'Oct', 'Nov', 'Dec'], 
     dayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'], 
     dateFormat: 'mm/dd/yy', 

     //maxDate: new Date(1993, 1-1, 1), 
     maxDate: new Date(Annee, PlageMois, Jour), 
     showOn: "button", 
     buttonImage: "/images/img-calendar.gif", 
     buttonImageOnly: true 
    }); 
}); 

邊注:JavaScript中的壓倒性的慣例是變量與小寫字母(today而不是Today)開始。用大寫字符開始(Today)通常只能用於構造函數(如Date)。

+0

另一方面,爲避免與隱式全局變量衝突,最好避免使用單個單詞,而應使用'date_today'之類的東西。 – Raptor

+0

我明白你的意思,但是如果是這種情況,所有瀏覽器都不會發生這種情況嗎? (評論理由:標題中提及* IE8 *) – Harry

+1

@哈里:不一定,不。當由於非JavaScript事件(標記,插件等)而創建全局變量時,瀏覽器會進入主機對象的整個區域,並且結果因瀏覽器而異。 –

相關問題