web-dev-qa-db-ja.com

TypeError:日付はコンストラクターではありません

それで、私は過去に私のために働いた非常に簡単な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ビット

8
Pepper Ky

変数Dateはグローバル関数を隠しています Date そしてこのエラーを引き起こしています。 JSでのスコープの仕組みのため、名前の最も内側の使用が重要です。

この場合、関数が知っている唯一のDateになるvar Dateを宣言します。フィールドまたはテキスト(Date = this.getField...)を割り当てると、グローバルクラスが非表示になります。

変数の名前を変更するか(大文字は通常型用に予約されているため、dateをお勧めします)、新しい日付を作成するときにnew window.Dateを明示的に参照できます。

17
ssube

これは私のために働いた:

  var d = new window.Date();
1
garish

私はこの問題を抱えていました、そして私はそれを解決しました! "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; <-宣言が間違っているため、ビルドインオブジェクト名を使用しないでください

0
K.L Sathish