undefined

Status
Niet open voor verdere reacties.

klaploper

Nieuwe gebruiker
Lid geworden
23 jan 2007
Berichten
2
hoi

Ik bouw momenteel een clan-website. Nu heeft clanbase een standaard script waarmee je je matches kan weergeven op je eigen website. Alleen staat de tijdzonde van dit script standaard op GMT. Om dit op te lossen heb ik wat een het script gesleuteld.

Inmiddels is het gelukt om de tijdzonde te veranderen, maar nu staat er telkens "undefined" achter. En ik snap totaal niet waarom...

voorbeeld:
http://home.planet.nl/~kuiperi/matches.htm


Het script bestaat uit meerdere stukken, maar de stukken die hier wat mee te maken hebben zijn deze:

Code:
function parseCBDate(date)
{ 
	var parts = date.split(' ');
	var time = parts[1].split(':');
	willem=parseInt(time[0]);
	time[5]=willem+1;
	document.write(parts[0]+"<br>"+time[5]+":"+time[1]);}

Code:
function cbjsWarUpcoming_Each(wid,clan,cid,lid,date,level1,level2,game,subgame,type)
{
	//	Only show first match
	//	Note: the date is GMT
	//	Converting this date to localtime is left as an excercise for the reader :-)
	document.write("<br><br><class='large'>Opponent: <a class='foo' href='http://www.clanbase.com/claninfo.php?cid="+cid+"' class='slink' target='bla'>"+clan+"<br></a>");
	document.write(""+parseCBDate(date)+"");
	document.write("<br><class='large'>Game: <a class='foo' href='http://www.clanbase.com/rating.php?lid="+lid+"' class='slink' target='bla'>"+game+"/"+subgame+"</a>");
	document.write("<br><class='large'>Extra: <a class='foo' href='http://www.clanbase.com/warinfo.php?wid="+wid+"' class='slink' target='bla'>details</a>");
	count2++;
}

het gaat om het parseCBDate gedeelte....

De vraag is dus: weet iemand hoe ik van het "undefined" af kom, of waarom het er staat?
 
Je moet er ook rekening meehouden dat, bij 23 uur, het een dag later wordt (en eventueel een maand en eventueel een jaar). :)

Dit script doet dat:
Code:
<script>

function parseCBDate(date) {
 // Egel 070125 ;)
 // 2006-12-31 23:14:05 > 2007-01-01  00:14'05"
 var d = date.split(/[\-\ \:]/);
 d = new Date(d[0],d[1]-1,d[2],d[3],d[4],d[5]);
 d.setHours(d.getHours() + 1);
 function t(n) { return (n < 10 ? '0' : '') + n;};
 return d.getFullYear() + '-' + t(d.getMonth()+1) + '-' + t(d.getDate()) + '&nbsp;&nbsp;' + t(d.getHours()) + ':' + t(d.getMinutes()) + '\'' + t(d.getSeconds()) + '&quot;';
 };

// Voorbeeld:
document.write(parseCBDate('2006-12-31 23:14:05'));

</script>
Eerst wordt de string in een array gesplit,
daarmee wordt een nieuw datum object gemaakt,
daar wordt een uur bij opgeteld,
(functie voor een voorloopnul)
en daarna de return van de datum. :)

De opmaak kan je in die laatste zin aanpassen.


Vr.Gr. Egel.
 
Laatst bewerkt:
geniaal.. daar had ik nog geen seconde aan gedacht. Overigens had ik de oplossing voor mn probleem al via een ander forum gekregen, maar hier had ik nog geen seconde bij stil gestaan. Kga het er meteen in zetten. Overigens zit er wel één foutje in je script: Het "document.write" moet vervangen worden door "return". Dan is het probleem met "undefined" namelijk ook verdwenen.

iig superbedankt !
 
Graag gedaan! :)

Overigens zit er wel één foutje in je script: Het "document.write" moet vervangen worden door "return". Dan is het probleem met "undefined" namelijk ook verdwenen.
:o Ik had er even niet op gelet hoe het werd aangeroepen, dat dat de undefined veroorzaakte was ik niet achtergekomen. :D Bij iets dat parse heet had ik ook eigenlijk een return value moeten verwachten.

Ik zag dat je notatie nu 1-01-2007 00:14:05 is, misschien is dit ook nog een idee:
Code:
<script>function parseCBDate(date) {
 // Egel 070125 ;)
 // 2006-12-31 23:14:05 > 1 Jan 2007  00:14:05
 var d = date.split(/[\-\ \:]/);
 d = new Date(d[0],d[1]-1,d[2],d[3],d[4],d[5]);
 d.setHours(d.getHours() + 1);
 function t(n) { return (n < 10 ? '0' : '') + n;};
 var m = new Array('Jan','Feb','Mrt','Apr','Mei','Jun','Jul','Aug','Spt','Okt','Nov','Dec');
 return d.getDate() + ' ' + m[d.getMonth()] + ' ' + t(d.getFullYear()) + '&nbsp;&nbsp;' + t(d.getHours()) + ':' + t(d.getMinutes()) + ':' + t(d.getSeconds());
 };

// Voorbeeld:
document.write(parseCBDate('2006-12-31 23:14:05'));
</script>
Dan krijg je: 1 Jan 2007 00:14:05 :)


Vr.Gr. Egel.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan