View Full Version : Javascript getDate() Problem

05-21-2008, 04:00 PM
I've got this script that doesn't quite work. It is supposed to get todays date and populate 2 (actually 3 - I am not using the yearfield) pulldowns with that date as well as the options to change the date to any other month and day of the month. It is working except that it doesn't populate a option for the day of the month following "today's date". It just has todays date listed 2 times in the pulldown. Any ideas? Thanks!

Here is the page:


var monthtext=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sept','Oct','Nov','Dec'];

function populatedropdown(monthfield, dayfield, yearfield){
var today=new Date()
var dayfield=document.getElementById(dayfield)
var monthfield=document.getElementById(monthfield)
var yearfield=document.getElementById(yearfield)
for (var i=0; i<31; i++)
dayfield.options[i]=new Option(i+1, i+1)
dayfield.options[today.getDate()]=new Option(today.getDate(), today.getDate(), true, true) //select today's day
for (var m=0; m<12; m++)
monthfield.options[m]=new Option(monthtext[m], monthtext[m])
monthfield.options[today.getMonth()]=new Option(monthtext[today.getMonth()], monthtext[today.getMonth()], true, true) //select today's month
var thisyear=today.getFullYear()
for (var y=0; y<20; y++){
yearfield.options[y]=new Option(thisyear, thisyear)
yearfield.options[0]=new Option(today.getFullYear(), today.getFullYear(), true, true) //select today's year

05-22-2008, 03:10 PM
If there is no:

var yearfield=document.getElementById(yearfield)

There will be an error and is. But FF and IE 7 recover from it. And it looks fine in those browsers (notwithstanding the alert flag bottom left in IE 7). What browser are you using?

You could always make a yearfield select element with its display property set to none. That would get rid of the error, and perhaps take care of the other problem.

05-22-2008, 05:10 PM
I am testing on all of them. I was aware of the script error for yearfield, it was still showing todays date 2 times in the populated pulldown. I altered the code :

for (var i=0; i<31; i++)
dayfield.options[i]=new Option(i+1, i+1)

for (var i=1; i<32; i++)
dayfield.options[i]=new Option(i, i)

Now it works fine, don't know exactly why though :) Thanks!

06-02-2008, 02:07 PM
One more snafu with the code. I've fixed the earlier problem that displayed todays date twice when it populated the dropdowns, but now there are allways an additional day in every populated dropdown for the days of the month. Any suggestions?

06-02-2008, 06:18 PM
I'm not seeing that.

06-02-2008, 09:02 PM
The code is fixed now. Sorry I forgot to post when I changed it. Thanks for looking at it though.