make a time script shorter

T

Treetop

I used the following script for a site to stop displaying after a date /
time, but it seems huge. Any ideas on how to make it shorter? There are
many events in this list.


function events() {

var today = new Date();
var dayarray=new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat")
var montharray=new
Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec
")


document.write('<table>');
var event = "Spirit of the Dance - 8:00 pm (<a
href=ticketorderform_spiritofthedance.html>Order Tickets</a>)";
var date = new Date("October 30, 2003");
date.setHours (23);
date.setMinutes (21);
date.setSeconds (59);
var year=date.getYear()
if (year < 1000)
year+=1900
var day=date.getDay()
var month=date.getMonth()
var daym=date.getDate()
var cdate=dayarray[day]+", "+montharray[month]+" "+daym+" "+year+" "
if (today.getTime() <= date.getTime()) {
document.write('<tr><td valign=top>');
document.write(cdate);
document.write('</td><td>- ');
document.write(event);
document.write('</td></tr>');
}


document.write('</table>');

}
 
D

Dr John Stockton

JRS: In article <[email protected]>,
seen in news:comp.lang.javascript said:
I used the following script for a site to stop displaying after a date /
time, but it seems huge. Any ideas on how to make it shorter? There are
many events in this list.


function events() {

var today = new Date();
var dayarray=new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat")
var dayarray=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]
var montharray=new
Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec
")


document.write('<table>');
var event = "Spirit of the Dance - 8:00 pm (<a
href=ticketorderform_spiritofthedance.html>Order Tickets</a>)";
var date = new Date("October 30, 2003");
date.setHours (23);
date.setMinutes (21);
date.setSeconds (59);

var date = new Date(2003,9,30,23,21,59)
var date = new Date("2003/10/31") // near enough ?
var date = new Date("2003/10/30 23:21:59")
var year=date.getYear()
if (year < 1000)
year+=1900

var year = 1900 + date.getYear()%1900 // < AD 3800
var day=date.getDay()
var month=date.getMonth()
var daym=date.getDate()
var cdate=dayarray[day]+", "+montharray[month]+" "+daym+" "+year+" "
if (today.getTime() <= date.getTime()) {
document.write('<tr><td valign=top>');
document.write(cdate);
document.write('</td><td>- ');
document.write(event);
document.write('</td></tr>');
}

if (today <= date) with (date)
document.write('<tr><tc valign=top>, dayarray[getDay()], ', ',
montharray[getMonth()], ' ', getDate(), ' ',
1900 + date.getYear()%1900 said:
document.write('</table>');

}

After testing, then shorten variable names.

For World-Wide Web use, M D Y is silly; use Y M D. Consider LZ, or
equivalent, to add leading zero to getDate().

There is no point in calculating anything that will not get used; test
the date earlier.



To shorten repetitive work, use a function with parameters. For
example, function WriteTable(Evnt, Till) ; today, dayarray,
montharray can be global. If the Evnt always has a similar URL,
parameterise the variable part of that, too :-

WT("Spirit of the Dance - 8:00 pm",
"spiritofthedance", "2003/10/30 23:21:59")

Then you can, for a slight gain on a long schedule, supply those as
elements of an array :

var Data = [
["Spirit of the Dance - 8:00 pm",
"spiritofthedance", "2003/10/30 23:21:59"],
["Mozart - 15:30", "wam", "2003/12/31 11:45"], ... ... ]



Read the FAQ, thoughtfully.



Note that the event occurs at a specific time and location; you want to
prevent ticket ordering at that absolute time or a fixed offset from
that, independently of the orderer's location. The chronologically
retarded, such as Alaskans, should not be able to take undue advantage;
the advanced Maoris should not be handicapped.

It is still possible, I think, to be using a computer
in the VIP lounge at LHR, and to arrive in or near NYC
at an earlier local time.



NOTE to all, prompted by above :

<URL:http://www.merlyn.demon.co.uk/js-date5.htm#DDTA> is much changed;
it could do with a functionality test on later browsers, a correctness
check, and any suggestions for reasonable code reduction. I think the
page displays all relevant code, except imports.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,534
Members
45,007
Latest member
obedient dusk

Latest Threads

Top