2013-10-16 115 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事件(标记,插件等)而创建全局变量时,浏览器会进入主机对象的整个区域,并且结果因浏览器而异。 –

相关问题