それで、私は過去に私のために働いた非常に簡単なJavascriptを使って、しばらくの間私の会社のためにフォームを作成してきました。しかし、突然、エラーが発生しました:TypeError: Date is not a constructor
コード:
var Date = this.getField("Text1");
Date.value = util.printd("mm/dd/yyyy",new Date());
古いフォームではすべて機能しますが、新しいフォームでは機能しません...古いフォームに新しいボタンを作成してみました-コードをコピーして貼り付けるだけで、すべてが壊れます他のボタンと同じエラーを吐き出します。
実行中:Acrobat XI11.0.10を搭載したWindows764ビット
変数Date
はグローバル関数を隠しています Date
そしてこのエラーを引き起こしています。 JSでのスコープの仕組みのため、名前の最も内側の使用が重要です。
この場合、関数が知っている唯一のDate
になるvar Date
を宣言します。フィールドまたはテキスト(Date = this.getField...
)を割り当てると、グローバルクラスが非表示になります。
変数の名前を変更するか(大文字は通常型用に予約されているため、date
をお勧めします)、新しい日付を作成するときにnew window.Date
を明示的に参照できます。
これは私のために働いた:
var d = new window.Date();
私はこの問題を抱えていました、そして私はそれを解決しました! "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());
「Date」という変数を定義することはできません。これは、JSにそれと呼ばれる組み込みオブジェクトがあるためです(実際には、コードで使用しています)。名前を別の名前に変更します。
var Date = somthing; <-宣言が間違っているため、ビルドインオブジェクト名を使用しないでください