Avatar billede freesite Nybegynder
20. november 2005 - 09:32 Der er 3 kommentarer og
1 løsning

kald af samme funktion

Hej
Jeg har lavet en kalender og den virker også fint, men jeg vil lave to knapper en til at bladre en måned frem, og en tilbage.
Har prøvet at lave funktionen frem men den melder fejl når der trykkes på knappen mere end en gang.
Dvs først gang der trykkes på knappen virker det fint

tror det er her fejlen opstår
document.write(createCalendar(year,month));          //L24
og her
var frem ="<a href='java script:self.nextMonth()';><font color='#ffffff'>frem</font></a>"  //L 31
og
cal+="<center><font color=800000 face=areal size=3>"+monthArray[month]+frem+'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'+year+"</font><tr></center>";    //L 57

tror det har noget at gøre med at jeg kalder en funktion som så udskriver samme funktion igen.

------------------hele koden-------------------------------
<html>

<head>
<title>Kalender</title>
</head>
<script>

var month=0;
var year=2000;

var monthArray = new Array("Januar","Febuar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December");
var dayInMonth = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
var dayArray = new Array("Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag","Søndag");



function nextMonth(){
  if (month<12)
    month++;
  else{
    month=0;
    year++;
  }
  document.write(createCalendar(year,month));
}




function createCalendar(year,month){
var frem ="<a href='java script:self.nextMonth()';><font color='#ffffff'>frem</font></a>"

var calendar = new Date(year,month);
//----------- startfelt & slutfelt initialiseres ---------------------------
var thisday =new Date();

var firstcal=new Date(year,month,0);
var first = firstcal.getDay();

if (year==2008)
dayInMonth[1]=29;
else dayInMonth[1]=28;
var last =dayInMonth[month];

//--------------------------------------------------------------------------
var colls=4;
var count=0;
var days=0;

//------------------ Kalender opbygges ----------------------------


//------------Head af kalender opbygges---------------------------
cal='<table border=0 style="cursor:hand;" cellspacing=0 width=80% bordercolor=BBBBBB><tr>';
cal+='<table border=1 style="cursor:hand;" cellspacing=0 width=80% bordercolor=EEEEEE><tr>';
cal+='<center><td colspan="7" bgcolor="#EEEEEE"</center>';
cal+="<center><font color=800000 face=areal size=3>"+monthArray[month]+frem+'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'+year+"</font><tr></center>";
//------------Ugedage indsættes-----------------------------------
for(i=0;i<dayArray.length;i++){
    cal+="<center><td align=center bgcolor=#EEEEBB><font color=808080 face=areal size=2>"+dayArray[i]+"</font></td></center>";
    }
   

   
//------------Dage fleter initialiseres---------------------------
for (i=0;i<=colls;i++){
  cal+="<tr>";
  for(j=0;j<=6;j++){
    count++;
    if(count<=first||days>=last)
      cal+="<td bgcolor=#EEEEEE></td>";
    else{
      days++;
      if (days==thisday.getDate() && thisday.getMonth()==month)
        cal+="<td onclick=getDayPages("+days+") bgcolor=#EEEEBB align=right><font color=808080 face=areal size=2>"+days+"</font><br><center><br></center><br></td>";   
      else
        cal+="<td onclick=getDayPages("+days+") align=right><font color=808080 face=areal size=2>"+days+"</font><br><center><br></center><br></td>";   
    }
  }
  cal+="</tr>";
}
cal+="</tr></table></tr></table>";
return cal;

}

function getDayPages(i){
document.write(i);
}
//-----------------------------
var cale=new Date();
document.write(createCalendar(year,month));


</script>

<body>

</body>

</html>
-------------------------------------------------------
håber der er en som kan finde fejlen
Avatar billede thesurfer Nybegynder
20. november 2005 - 12:47 #1
Det er fordi du bruger "document.write".. så eksisterer nextMonth ikke længere..

Jeg har redigeret i din kode, og nu virker den fint..

Jeg har indsæt kalenderen i et DIV-tag, og bruger nu innerHTML til at udskrive.
Du kan nu bare skrive "udskriv(noget-her)"..

Eksempel:
udskriv(createCalendar(year,month));


Her er den komplette kode:
<html>

<head>
<title>Kalender</title>
</head>
<script>

var month=0;
var year=2000;

var monthArray = new Array("Januar","Febuar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December");
var dayInMonth = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
var dayArray = new Array("Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag","Søndag");



function nextMonth(){
  if (month<12)
    month++;
  else{
    month=0;
    year++;
  }
  udskriv(createCalendar(year,month));
}




function createCalendar(year,month){
var frem ="<a href='#' onclick='nextMonth();return false'><font color='#ffffff'>frem</font></a>"

var calendar = new Date(year,month);
//----------- startfelt & slutfelt initialiseres ---------------------------
var thisday =new Date();

var firstcal=new Date(year,month,0);
var first = firstcal.getDay();

if (year==2008)
dayInMonth[1]=29;
else dayInMonth[1]=28;
var last =dayInMonth[month];

//--------------------------------------------------------------------------
var colls=4;
var count=0;
var days=0;

//------------------ Kalender opbygges ----------------------------


//------------Head af kalender opbygges---------------------------
cal='<table border=0 style="cursor:hand;" cellspacing=0 width=80% bordercolor=BBBBBB><tr>';
cal+='<table border=1 style="cursor:hand;" cellspacing=0 width=80% bordercolor=EEEEEE><tr>';
cal+='<center><td colspan="7" bgcolor="#EEEEEE"</center>';
cal+="<center><font color=800000 face=areal size=3>"+monthArray[month]+frem+'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'+year+"</font><tr></center>";
//------------Ugedage indsættes-----------------------------------
for(i=0;i<dayArray.length;i++){
    cal+="<center><td align=center bgcolor=#EEEEBB><font color=808080 face=areal size=2>"+dayArray[i]+"</font></td></center>";
    }
   

   
//------------Dage fleter initialiseres---------------------------
for (i=0;i<=colls;i++){
  cal+="<tr>";
  for(j=0;j<=6;j++){
    count++;
    if(count<=first||days>=last)
      cal+="<td bgcolor=#EEEEEE>&nbsp;</td>";
    else{
      days++;
      if (days==thisday.getDate() && thisday.getMonth()==month)
        cal+="<td onclick=getDayPages("+days+") bgcolor=#EEEEBB align=right><font color=808080 face=areal size=2>"+days+"</font><br><center><br></center><br></td>";   
      else
        cal+="<td onclick=getDayPages("+days+") align=right><font color=808080 face=areal size=2>"+days+"</font><br><center><br></center><br></td>";   
    }
  }
  cal+="</tr>";
}
cal+="</tr></table></tr></table>";
return cal;

}

function getDayPages(i){
document.write(i);
}
//-----------------------------

function setup()
{
var cale=new Date();
udskriv(createCalendar(year,month));
}

function udskriv(indhold)
{
document.getElementById('kalender').innerHTML = indhold;
}
</script>

<body onload="setup()">
<div id="kalender"></div>

</body>

</html>

/theSurfer
Avatar billede thesurfer Nybegynder
20. november 2005 - 12:48 #2
Kig godt på koden (gerne linie for linie).. hvis du har spørgsmål, kan du bare stille dem.

/theSurfer
Avatar billede freesite Nybegynder
20. november 2005 - 13:56 #3
takker for hurtigt og super klart svar :-).
Avatar billede thesurfer Nybegynder
20. november 2005 - 16:56 #4
Det var så lidt :-)
Takker for points :-)

/theSurfer
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester