Avatar billede broxgaard Nybegynder
08. oktober 2012 - 16:09 Der er 9 kommentarer og
1 løsning

hjælp til en mdr kalender.

Hej

Jeg sidder og roder med dette script http://www.javascriptsource.com/time-date/monthly-calendar-with-reoccurring-events.html

Men når jeg i external fil slette nogle af de eventsArray som står der så kan jeg ikke ser kalender når jeg kigger på den i min browser.

Men hvis jeg ikke slettet nogle af dem så kan jeg godt ser den.

Nogle der har en idé om hvad der går galt?
Avatar billede olebole Juniormester
08. oktober 2012 - 16:42 #1
<ole>

Det er svært at sige, hvad du gør galt, når vi ikke ved, hvad du gør. Prøv at lægge et link til den side, du ikke kan få til at virke

/mvh
</bole>
Avatar billede broxgaard Nybegynder
08. oktober 2012 - 16:50 #2
HTTP://ke-skytter.dk/test/test.htm

Min reoccurringEventsCal.js fil ser sådan her ud:

/* This script and many more are available free online at
The JavaScript Source!! http://www.javascriptsource.com
Created by: Shaun Bailey | http://www.sbwebdevelopment.co.uk */
// set up variables
var monthsArray = new Array("Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December");
var daysArray = new Array("Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag");
var prevYears = 0;    // number of years before current date
var futureYears = 2;    // number of years after current date
var today = new Date();
var nowMonth = today.getMonth();
var nowYear = today.getFullYear();
var curMonth = nowMonth;
var curYear = nowYear;
var monthEvents;
today.setDate(1);    // set to first day of the month

var eventsArray = new Array();
// format: dd,mm,yyyy,"event","frequency (Annual/Monthly/Weekly)" - Delete frequency for once-time occurrences
eventsArray[0] = new newEvent(2,10,2012,"Skydning","Weekly");
eventsArray[1] = new newEvent(3,10,2012,"Skydning");
eventsArray[2] = new newEvent(13,10,2012,"Jul","Annual");
eventsArray[3] = new newEveny(10,10,2012,"Fest","Monthly");

// create event object
function newEvent(day, month, year, memo, occurrence) {
    this.day = day;
    this.month = month;
    this.year = year;
    this.memo = memo;
    this.occurrence = occurrence;
    this.createMonth = createMonth;
}

// creates calendar for the current month
function createMonth() {
    var startDay = today.getDay();    // first day of the month
    var monLength = monthLength();    // number of days in month
    var lastDay = startDay+monLength-1;    // last day of the month
    monthEvents = new Array();    // array to hold events for current month

    // search through events for current month
    for(i=0;i<eventsArray.length;i++) {
        if(eventsArray[i].month == (curMonth+1) && (eventsArray[i].year == curYear || eventsArray[i].occurrence == "Annual")) {
            monthEvents[monthEvents.length] = i;
        }
        else if(eventsArray[i].occurrence == "Monthly" || eventsArray[i].occurrence == "Weekly") {
            monthEvents[monthEvents.length] = i;
        }
    }

    var content = "<table class=\"calendar\" cellspacing=\"0\">\n";
    // create headers
    content += "<tr>\n<th><a class=\"button\" href=\"java script:void(prev())\">Previous</a></th>\n";
    content += "<th colspan=\"5\">" + monthsArray[curMonth] + " " + curYear + "</th>\n";
    content += "<th><a class=\"button\" href=\"java script:void(next())\">Next</a></th>\n</tr><tr>\n";
    for(i=0;i<7;i++) {
        content += "<th>" + daysArray[i] + "</th>\n";
    }
    content += "</tr>\n<tr>\n";

    // create main content of calendar
    for(i=0;i<42;i++) {
        var occ = "";
        var occContent = "";
        var curDay = i+1-startDay;
        // check day against months events
        for(j=0;j<monthEvents.length;j++) {
                var occDate = new Date();
                occDate.setDate(eventsArray[monthEvents[j]].day);
                occDate.setMonth(eventsArray[monthEvents[j]].month);
                occDate.setFullYear(eventsArray[monthEvents[j]].year);

                if(curDay == eventsArray[monthEvents[j]].day && eventsArray[monthEvents[j]].occurrence != "Weekly") {    // deal with day, monthly and annual events
                    occ = " class=\"occassion\"";
                    fullContent = eventsArray[monthEvents[j]].memo;
                    if(eventsArray[monthEvents[j]].memo.length > 14) {
                        occContent = fullContent.substr(0,13) + "...";
                        break;
                    }
                    else {
                        occContent = fullContent;
                        break;
                    }
                }
                else if(occDate.getDate() == (i%7) && eventsArray[monthEvents[j]].occurrence == "Weekly") {    // deal with weekly events
                    occ = " class=\"occassion\"";
                        fullContent = eventsArray[monthEvents[j]].memo;
                    if(eventsArray[monthEvents[j]].memo.length > 14) {
                        occContent = fullContent.substr(0,13) + "...";
                        break;
                    }
                    else {
                        occContent = fullContent;
                        break;
                    }
                }
        }
        if(i>lastDay && i==35) {    // do not show last row if not needed
            break;
        }
        if(i<startDay || i>lastDay) {    // show blank cells before and after month
            content += "<td class=\"blank\"> </td>\n";
        }
        else {
            if(!(i%7) || !((i+1)%7) ) {    // get days of the weekend
                if(!(i%7)&& i>0) {
                    content += "</tr>\n<tr>\n";
                }
                content += "<td" + occ + "><span class=\"weekend\">"+curDay+"</span><br /><a href=\"java script:void(alert('"+fullContent+"'));s\">"+occContent+"</a></td>\n";
            }
            else {
                content += "<td" + occ + ">"+curDay+"<br /><a href=\"java script:void(alert('"+fullContent+"'));\">"+occContent+"</a></td>\n";
            }
        }
    }
    content += "</tr></table>\n";

    return content;
}

// get length of month
function monthLength() {
    monLength = 31;
    if(curMonth == 3 || curMonth == 5 || curMonth == 8 || curMonth == 10) monLength = 30;
    if(curMonth == 1) {
        if(curYear%4) {
            monLength = 28;
        }
        else {
            monLength = 29;
        }
    }
    return monLength;
}

function droplists() {
    content = "<form name=\"calNav\" method=\"post\" action=\"\">\n";
    content += "<select name=\"month\">\n";
    for(i=0;i<12;i++) {
        content += "<option value=\""+i +"\"";
        if(i == curMonth) {
            content += " selected=\"selected\"";
        }
        content += ">" + monthsArray[i] + "</option>\n";
    }
    content += "</select> <select name=\"year\">\n";
    for(i=(nowYear-prevYears);i<=(nowYear+futureYears);i++) {
        content += "<option value=\""+i +"\"";
        if(i == curYear) {
            content += " selected=\"selected\"";
        }
        content += ">" + i + "</option>\n";
    }
    content += "</select>\n<input type=\"button\" value=\"Go\" onclick=\"newMonth()\" />\n";
    content += "</form>\n";
    return content;
}

function newMonth() {
    var mon = document.calNav.month.selectedIndex;
    curMonth = parseInt(document.calNav.month.options[mon].value);
    var yr = document.calNav.year.selectedIndex;
    curYear = parseInt(document.calNav.year.options[yr].value);
    today.setMonth(curMonth);
    today.setFullYear(curYear);
    document.getElementById("showCal").innerHTML = droplists() + createMonth();
}

// goto previous month
function prev() {
    curMonth -= 1;
    if(curMonth<0) {
        curMonth=11;
        if(curYear>(nowYear-prevYears)) {
            curYear -= 1;
        }
    }
    today.setMonth(curMonth);
    today.setFullYear(curYear);
    document.getElementById("showCal").innerHTML = droplists() + createMonth();
}

// goto next month
function next() {
    curMonth += 1;
    if(curMonth>11) {
        curMonth=0;
        if(curYear<(nowYear+futureYears)) {
            curYear += 1;
        }
    }
    today.setMonth(curMonth);
    today.setFullYear(curYear);
    document.getElementById("showCal").innerHTML = droplists() + createMonth();
}
Avatar billede olebole Juniormester
08. oktober 2012 - 17:01 #3
Du kan ikke udvikle websider med browserens fejlmeddelelser slået fra - eller uden at kikke i fejlkonsollen. Siden smider en fejl på onload, som klart siger, hvad der er galt:

eventsArray[3] = new newEveny(10,10,2012,"Fest","Monthly");
Avatar billede broxgaard Nybegynder
08. oktober 2012 - 17:07 #4
nu er den fejl rettet..

Og har fået slået til så jeg kan ser fejl..

men den fejl som den kommer med nu forstår jeg virkelig bare ikke.. for det er et sted jeg ikke har rørt ved
Avatar billede olebole Juniormester
08. oktober 2012 - 17:17 #5
Prøv at uploade den rettede fil, så jeg kan se fejlen
Avatar billede broxgaard Nybegynder
08. oktober 2012 - 17:20 #6
den er lagt ud..

den fejl jeg får er

Linje: 112
Fejl: 'fullContent' er ikke defineret

Og det er denne her linje :
    content += "<td" + occ + ">"+curDay+"<br /><a href=\"java script:void(alert('"+fullContent+"'));\">"+occContent+"</a></td>\n";
Avatar billede olebole Juniormester
08. oktober 2012 - 18:04 #7
Ja, scriptet er buggy. Det virker med nogle events, men ikke med andre  :o|

Hvis du kopierer hans events fra demo'en ind, virker koden fint. Lægger du dine events efter hans, virker det også. Hvis du erstatter hans fire første events med dine fire, virker det ikke.

Hvorfor, det ikke virker, orker jeg ikke sidde og drible med. Find et script, der virker ... WWW flyder med kalender scripts  =)

I øvrigt er dokumentet ikke et XHTML 1.1 dokument, og da du ikke bruger XML i dokumentet, har du ikke noget at bruge XHTML til. Jeg kan derfor anbefale, at skifter linjerne:

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="da">

- ud med:

<!DOCTYPE html>
<html>

- eller:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
Avatar billede broxgaard Nybegynder
08. oktober 2012 - 18:14 #8
Okay..

Ja jeg har sådan set også opgivet at finde rundt i det nu..
Hvis du lige svare så kan du får point for din hjælp
Avatar billede olebole Juniormester
08. oktober 2012 - 18:26 #9
Ellers tak, jeg samler ikke point. Læg selv et svar og accepter det, så tråden lukkes  =)
Avatar billede broxgaard Nybegynder
08. oktober 2012 - 18:29 #10
ok
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