JRS: In article <ac************ *************** ***@news.terane ws.com>,
seen in news:comp.lang. javascript, Treetop <tr*****@netfro nt.net> posted
at Fri, 3 Oct 2003 16:42:30 :-
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","Mo n","Tue","Wed", "Thu","Fri","Sa t")
var dayarray=["Sun","Mon","Tu e","Wed","Thu", "Fri","Sat"]
var montharray=new
Array("Jan","F eb","Mar","Apr" ,"May","Jun","J ul","Aug","Sep" ,"Oct","Nov","D ec
")
document.write ('<table>');
var event = "Spirit of the Dance - 8:00 pm (<a
href=ticketord erform_spiritof thedance.html>O rder 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.getYe ar()
if (year < 1000)
year+=1900
var year = 1900 + date.getYear()% 1900 // < AD 3800
var day=date.getDay ()
var month=date.getM onth()
var daym=date.getDa te()
var cdate=dayarray[day]+", "+montharra y[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, '<\/td><td>- ', event, '<\/td><\/tr>')
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",
"spiritofthedan ce", "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",
"spiritofthedan ce", "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.demo n.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.
--
© John Stockton, Surrey, UK. ?@merlyn.demon. co.uk Turnpike v4.00 IE 4 ©
<URL:http://jibbering.com/faq/> Jim Ley's FAQ for news:comp.lang. javascript
<URL:http://www.merlyn.demo n.co.uk/js-index.htm> JS maths, dates, sources.
<URL:http://www.merlyn.demo n.co.uk/> TP/BP/Delphi/JS/&c., FAQ topics, links.