ugrás a tartalomhoz

javascript naptár bug

topper · 2008. Feb. 26. (K), 17.13
valamit benézek, de nem tudom mit...
az első lapozás működik bármelyik irányba, de a másodiknál
bejön valami hiba (a várt elem objektum).
gondolom valami változó hatókör probléma lesz, de hol?
tipp? (netán megoldás...)
előre is köszi!
<html>
<head>
<script language="javascript">
function prevmonth(yy, mm) {
if (mm == 0) {naptar(yy-1, 11);} else {naptar(yy, mm-1);}
}
function nextmonth(yy, mm) {
if (mm == 11) {naptar(yy+1, 0);} else {naptar(yy, mm+1);}
}
function naptar(y, m) {
var day_of_week = new Array('H','K','Sze','Cs','P','Szo','V');
var month_of_year = new Array('Január','Február','Március','Április','Május','Június','Július','Augusztus','Szeptember','Október','November','December');
var calendar = new Date();
if (y == 0) {var year = calendar.getYear(); var month = calendar.getMonth();}
else {var year = y; var month = m;}
var today = calendar.getDate();
var weekday = calendar.getDay();
var days_of_week = 7;
var days_of_month = 31;
var cal;
calendar.setDate(1);
calendar.setMonth(month);
var tr_start = '<tr>';
var tr_end = '</tr>';
var highlight_start = '<td width=25><table cellspacing=0 border=1><tr><td width=25 align=center>';
var highlight_end   = '</td></tr></table>';
var td_start = '<td width=25 align=center>';
var td_end = '</td>';
cal =  '<table border=1 cellspacing=0 cellpadding=0><tr><td>';
cal += '<table border=0 cellspacing=0 cellpadding=0>' + tr_start;
cal += '<td align=center><input type="button" style="border: 0; background: transparent;" value="\<<" onClick="prevmonth(' + year + ',' + month + ');" /></td>';
cal += '<td colspan=5 align=center><b>';
cal += year + ' | ' + month_of_year[month] + td_end;
cal += '<td align=center><input type="button" style="border: 0; background: transparent;" value="\>>" onClick="nextmonth(' + year + ',' + month + ');" /></td>' + tr_end;
cal += tr_start;
for(index=0; index < days_of_week; index++)
{
if(weekday == index+1)
cal += td_start +  day_of_week[index] + td_end;
else
cal += td_start + day_of_week[index] + td_end;
}
cal += td_end + tr_end;
cal += tr_start;
for(index=0; index < calendar.getDay()-1; index++)
cal += td_start + '  ' + td_end;
for(index=0; index < days_of_month; index++)
{
if(calendar.getDate() > index)
 {
  week_day = calendar.getDay()-1;
  if(week_day == 0)
  cal += tr_start;
  if(week_day != days_of_week)
  {
  var day  = calendar.getDate();
  if( today==calendar.getDate() )
  cal += highlight_start + '<a href=' + year + month + day + ' target="_self">' + day + '</a>' + highlight_end + td_end;
  else
  cal += td_start + '<a href=' + year + month + day + ' target="_self">' + day + '</a>' + td_end;
  }
  if(week_day == days_of_week)
  cal += tr_end;
  }
  calendar.setDate(calendar.getDate()+1);
}
cal += '</td></tr></table></table>';
document.write(cal);
}
</script>
</head>
<body>
<script language="javascript">naptar(2008,1);</script>
</body>
</html>
 
1

hát...

rrd · 2008. Feb. 26. (K), 19.03
Egyrészről ha már beraksz egy teljes kódot akkor használhatnád a kódszínezőt, hogy lehessen látni, hogy mi is az.
Másrészről a validságtól igen messze áll a kódod, szóval más más rendszereken más hibákat fog produkálni.
Harmadrészt ha már van egy hibaüzeneted akkor megírhatnád, hogy melyik sorra jelez és pontosan mit.

Ha ezeket figyelembe veszed akkor nagyobb valószínűséggel kapsz válaszokat.

Egyébként megnéztem a kódot, nálam Mac FF alatt azt csinálja, hogy egy lapozás után tölt a végtelenségig, és ezért ha újra próbálok lapozni, akkor megmondja, hogy a hivatkozott nextmonth nem létezik, ami nem meglepő, mivel még nem töltődött be.

Amit első körben javasolnék:
Készíts valid (x)html kódot, namespaceld a javasciptet és rakd ki egy külön fileba amit belinkelsz. Ez valószínűleg nem oldja meg a problémát, viszont könnyebbé teszi beazonosítani.