【问题标题】:TypeError: Date is not a constructorTypeError:日期不是构造函数
【发布时间】:2015-07-19 17:57:17
【问题描述】:

所以,一段时间以来,我一直在为我的公司制作表单,使用过去对我有用的非常简单的 Javascript。然而突然之间它踢出了错误:TypeError: Date is not a constructor

代码:

var Date = this.getField("Text1");
Date.value = util.printd("mm/dd/yyyy",new Date());

它适用于我所有的旧表单,但现在它不适用于新表单......我尝试在旧表单上制作一个新按钮 - 只需复制和粘贴代码,然后它就会打破所有其他按钮并吐出相同的错误。

运行:Windows 7 64 位和 Acrobat XI 11.0.10

【问题讨论】:

    标签: javascript date constructor typeerror acrobat


    【解决方案1】:

    变量Date 隐藏了全局函数Date 并导致此错误。由于 JS 中作用域的工作方式,名称的最内部使用是最重要的。

    在这种情况下,您声明了var Date,它成为函数知道的唯一Date。当您为其分配字段或文本 (Date = this.getField...) 时,您隐藏了全局类。

    你可以重命名你的变量(我建议date,因为大写名称通常是为类型保留的)或者当你去构造一个新的日期时明确引用new window.Date

    【讨论】:

    • 使用 AngularJs 时遇到了同样的问题。有一项被注入的服务称为“日期”。重命名服务(如果可能)或使用 window.Date 可以解决问题。
    【解决方案2】:

    这对我有用:

      var d = new window.Date();
    

    【讨论】:

    • 我在 React 中使用了var x = new Date(someNumber),但它不起作用。这种方法解决了我的问题。谢谢!
    【解决方案3】:

    你不能定义一个名为“Date”的变量,因为在 JS 中有一个内置的对象叫做那个(实际上你在你的代码中使用它)。将名称更改为其他名称。

    var Date= somthing;

    【讨论】:

    • 定义名为Date的变量是没有问题的。问题在于它是一个全局变量,可能会被页面上的许多其他事物使用。详情请查看@ssube 答案
    【解决方案4】:

    我遇到了这个问题,我解决了!不要使用 "Date" 作为变量,因为这会导致与全局函数 Date();

    冲突

    例子:错了!

    var Date = new Date();
         document.getElementById('dateCopy').innerHTML = Date.getFullYear();
    

    对:

    var DateTime = new Date();
          document.getElementById('dateCopy').innerHTML = DateTime.getFullYear();
    

    在你的情况下:

    var DateTime = this.getField("Text1");
    DateTime.value = util.printd("mm/dd/yyyy",new Date());
    

    【讨论】:

      【解决方案5】:

      可能这个答案将来会有所帮助。我正在使用下面的代码

      var dateTime=new date(); 
      

      但正确的代码是

      var dateTime=new Date();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-08-14
        • 2018-06-27
        • 2016-04-16
        • 2021-11-26
        • 2019-10-27
        • 2018-07-18
        相关资源
        最近更新 更多