2015-05-08 3 views
3

Итак, я делал формы для своей компании уже довольно давно с довольно легким Javascript, который работал для меня в прошлом. Однако внезапно он выгоняя ошибку: TypeError: Date is not a constructorTypeError: Date не является конструктором

Кодекс:

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

Он работает на всех моих старых форм, но теперь он не будет работать на новых ... и я ve попытался создать новую кнопку на старой форме - просто скопировав и вставив код, а затем он сломает все остальные кнопки и выплюнет ту же ошибку.

Запуск: Windows 7 64-бит с Acrobat XI 11.0.10

ответ

8

Переменная Date скрывает глобальную функцию Date и вызывает эту ошибку. Из-за того, как работает область действия в JS, самое важное использование имени - это самое важное.

В этом случае вы объявляете var Date, который становится единственным Date, о котором функция знает. Когда вы назначаете ему поле или текст (Date = this.getField...), вы скрываете глобальный класс.

Вы можете переименовать переменную (я бы предложил date, поскольку имена капиталов обычно зарезервированы для типов) или явно ссылаются на new window.Date, когда вы идете построить новую дату.

+0

Имел ту же проблему, используя AngularJs. Была введенная услуга под названием «Дата». Переименование службы (если возможно) или использование окна.Date решает проблему. – Michiel

0

Вы не можете определить переменную под названием «Дата», потому что в JS есть встроенный объект, который на самом деле используется в вашем коде. Измените имя на другое.

var Date = somthing; < - неверно объявить, вы не должны использовать имя объекта build -in

+0

Нет проблемы с определением переменной Date. Проблема в том, что это глобальная переменная, которая может использоваться многими другими вещами на странице. Проверьте ответ @ssube для получения более подробной информации. – jetpackpony

Смежные вопросы