所以,我已经为我的公司制作了一段时间的表格了,过去使用的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位
答案 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();