TypeError:Date不是构造函数

时间:2015-05-08 18:10:04

标签: javascript date constructor typeerror acrobat

所以,我已经为我的公司制作了一段时间的表格了,过去使用的Javascript非常简单。然而,突然之间,它就出现了错误:TypeError: Date is not a constructor

守则:

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

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

运行:带有Acrobat XI 11.0.10的Windows 7 64位

4 个答案:

答案 0 :(得分:14)

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

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

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

答案 1 :(得分:0)

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

var Date = somthing; < - 错误声明,你不应该使用build -in对象名

答案 2 :(得分:0)

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

例如:错!

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());

答案 3 :(得分:0)

这对我有用:

  var d = new window.Date();