2015-05-08 271 views
3

因此,我一直在爲我的公司製作表單,現在已經使用了非常簡單的Javascript語言,這些語言在過去一直適用於我。但是突然間它踢出錯誤的:TypeError: Date is not a constructorTypeError:日期不是構造函數

驗證碼:

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

它適用於我所有的舊形式,但現在它不會在新的工作...和我我試圖在舊窗體上創建一個新按鈕 - 只是複製並粘貼代碼,然後它會打破所有其他按鈕並吐出相同的錯誤。

運行:Windows 7的64位與Acrobat XI 11.0.10

回答

8

變量Date隱藏着全局函數Date,造成此錯誤。由於JS的作用範圍是如何工作的,名稱的最內層使用是重要的。

在這種情況下,您聲明var Date它成爲唯一的Date函數知道。當您爲其分配一個字段或文本(Date = this.getField...)時,您將隱藏全局類。

您可以重命名變量(因爲大寫名稱通常是爲類型保留的,所以我建議使用date),或者在您構建新日期時明確引用new window.Date

+0

使用AngularJs有同樣的問題。有一個服務被注入,稱爲'日期'。重命名服務(如果可能)或使用window.Date解決該問題。 – Michiel

0

你不能定義一個名爲「Date」的變量,因爲JS中有一個內置對象叫做這個(實際上你在代碼中使用它)。將名稱更改爲其他名稱。

var Date = somthing; < - 錯誤的聲明,你不應該使用build -in object name

+0

定義名爲Date的變量沒有問題。問題在於它是一個全局變量,可能會被頁面上的許多其他事物使用。詳細信息請查看@ssube答案 – jetpackpony