2014-12-08 3 views
0

это мой код, и я получаю «Uncaught TypeError: undefined не является функцией», что я делаю неправильно?Javascript date undefined error

var myDate = new Date().setDate(17); 
document.getElementById("result").innerHTML = myDate.getDate(); 
+1

.. и почему переопределения 'somethingelse', когда он не используется в первый раз? – Rhumborl

+0

Третий вар бесполезен. Вам нужно только объявить переменную один раз, как вы уже сделали со вторым var. – Havvy

ответ

5

setDateмодифицирует объект, который он вызывается и возвращает undefined. Если вы хотите, чтобы somethingelse относятся к дате, что today называют, но изменение в день, вы можете скопировать today, а затем изменить somethingelse:

var today = new Date(); 
var somethingelse = new Date(today.getTime()); 
somethingelse.setDate(17); 
document.getElementById("result").innerHTML = somethingelse.getDate(); 

Конечно, если вы не заботитесь о сохранении того, что было в today, вы можете, конечно, изменить это, не создавая копию.

var date = new Date(); 
date.setDate(17); 
document.getElementById("result").innerHTML = date.getDate(); 
+0

'new Date (today)' будет конвертировать * сегодня * в строку, затем проанализировать строку обратно на Date, рассмотреть 'new Date (+ today)', что эквивалентно использованию 'today.getTime()', но меньше тип. ;-) Заметим также, что для даты, подобной 21 января 15, вышеуказанный метод скопирует дату 21 января 1915 года в IE и некоторых других браузерах. Неясное наследие двухзначных лет, но одна из тех вещей, которые когда-нибудь укусят кого-то ... – RobG

+0

@RobG: Спасибо за предложение. – icktoofay

2

Это много достаточно: Вы можете взять тот же объект today и set и get дату для этого объекта.

var today = new Date(); 
today.setDate(17); 
document.getElementById("result").innerHTML = today.getDate(); 

Fiddle