Avatar billede frida Nybegynder
05. juni 2003 - 09:07 Der er 10 kommentarer og
1 løsning

Kalender med danske måneder

Jeg har fundet nedenstående script og vil nu gerne ændre det engelske månedsnavn til dansk.

Jeg har indsat et array med de danske måneder og hvis jeg sætter maaneder = months ændres månedsnavnene fint til dansk. Problemet er så bare at de måneder, som nu er danske ikke får nogle datoer, hvorimod de måneder der staves ens på dansk og engelsk fungerer fint.

Jeg kan ikke gennemskue problemet - så venligst hjælp!

Koden er:

<html>
<head>
    <title>Calendar</title>

    <script language="javascript" src="cengine.js"></script>
    <script language="javascript" src="other_scripts.js"></script>
    <script language="javascript">
    <!--


var days = new Array( "S", "M", "T",
          "O", "T", "F", "L" );

var maaneder  = new Array( "Januar", "Februar", "Marts",
              "April", "Maj", "Juni", "Juli", "August",
              "September", "Oktober", "November", "December" );


    var mo = "";
    var year = "";
    var currentmonth = today.getMonth();
    var currentyear = today.getFullYear();


    //cookies are not found
    if(document.cookie == "") {
        mo = today.getMonth();
        year = today.getFullYear();
    } else {
        mo = getCookie('whichmonth');
        //correct cookie is NOT set
        if(mo == null) {
            mo = today.getMonth();
            year = today.getFullYear();
            //alert number of reminders to user
            alertReminders();
        }
        //correct cookie is set
        else {
            mo = getCookie('whichmonth');
            year = getCookie('whichyear');
        }
    }

    //set a session cookie
    setCookie('whichmonth',mo);
    setCookie('whichyear', year);

    //backup one month and refresh
    function backup() {
        //check for a new year being set
        if(mo > 0) {
            mo--;
        } else {
            mo = 11;
            //check for 19**
            if(year == 2000) {
                year = 1999;
            } else if(year <= 1999) {
                syear = year.substring(2,year.length);
                syear--;
                year = "19" + syear;
                Number(year);
            } else {
                year--;
            }
        }
        setCookie('whichmonth',mo);
        setCookie('whichyear', year);

        //check for open child windows and close.
        if(child && !child.closed) {
            child.close();
        }

        document.location="calendar.html";
    }

    //go forward one month and refresh
    function stepup() {
        //check for a new year being set
        if(mo <  11) {
            mo++;
        } else {
            mo = 0;
            year++;
        }
        setCookie('whichmonth',mo);
        setCookie('whichyear', year);

        //check for open child windows and close.
        if(child && !child.closed) {
            child.close();
        }

        document.location="calendar.html";
    }

    //first starting day of month

    // months = maaneder // omdøber engelsk måned til dansk - men nu forsvinder datoerne i de 'engelske' måneder.??!!

    var first = months[mo] + " 01, " + year;
    firstday = new Date(first);
    startday = firstday.getDay();

    //variable for day count
    var count = 1;
    //variables for leap year
    var factor = startday - 1;
    var endday = parseInt(monthlen[mo]) + factor;

    var calbg = "#666666";
    var calwidth = "200px";
    var twidth = "14%";
    var theight = "40";

    var monthbg = "#666666";  // måned og år - baggrund
    var monfam = "verdana,arial,helvetica";
    var monsize = "1"
    var moncol = "#ffffff"

    var weekbg = "#eeeeee";
    var weekfam = "verdana,arial,helvetica";
    var weeksize = "1";                      //ugedagene
    var weekcol = "#ff0000";

    var daybg = "#eeeeee";
    var dayfam = "verdana,arial,helvetica";
    var daysize = "1";
    var daycol = "#000000";
    var sdaycol = "#ff0000";



    var calendar = "";
    calendar =  "<table bgcolor='" + calbg + "' width='" + calwidth + "' border='0' cellpadding='1' cellspacing='0'>";
    calendar += "<tr>";
    calendar += "<td align='center'>";

<!-- Month Starts Here -->
        calendar += "<table width='200px' border='0' cellpadding='3' cellspacing='0'>";
        calendar += "<tr>";
        calendar += "<td align='center'> <a href='java script:backup();'><font color='#ffffff'><b><<</b></font></a> </td>";
        calendar += "<td width='100px' bgcolor='" + monthbg + "' align='center'><font face='" + monfam + "' size=" + monsize + " color=" + moncol + "><b>";
        calendar += "<a href='java script://' onclick='open_all(\"all_reminders.html\");'><font color='#ffffff'>" + months[mo] + ", " + year + "</font></a>";
        calendar += "</b></font></td>";
        calendar += "<td align='center'> <a href='java script:stepup();'><font color='#ffffff'><b>>></b></font></a> </td>";
        calendar += "</tr>";
        calendar += "</table>";
<!-- Month Ends Here -->

    calendar += "</td>";
    calendar += "</tr>";
    calendar += "<tr>";
    calendar += "<td align='center'>";

<!-- Week Starts Here -->
    calendar += "<table width='200px' border='0' cellpadding='3' cellspacing='0'>";
    calendar += "<tr>";

    for(i = 0; i < 7; i++) {
        calendar += "<td width='" + twidth + "' bgcolor='" + weekbg + "' align='center' valign='middle'><font face='" + weekfam + "' size=" + weeksize + " color=" + weekcol + "><b>";
        calendar += days[i];
        calendar += "</b></font></td>";
    }

    calendar += "</tr>";
    calendar += "</table>";
<!-- Week Ends Here -->

    calendar += "</td>";
    calendar += "</tr>";
    calendar += "<tr>";
    calendar += "<td align='center'>";

<!-- Day Starts Here -->
        calendar += "<table width='200px' border='0' cellpadding='2' cellspacing='1'>";
        calendar += "<tr>";

        if(startday > 0) {
            for(empty = 0; empty < startday; empty++) {
                calendar += "<td width='" + twidth + "' height='" + theight + "'>&nbsp;</td>";
            }
        }

        for(i = startday; i <= endday;i++) {
            if( (i % 7) == 0) {
                calendar += "</tr><tr>";
            }

            //keep highlight info on the current month and day
            if( (i - (startday - 1)) == dt && currentmonth == mo && currentyear == year) {
                calendar += "<td width='" + twidth + "' height='" + theight + "' bgcolor='" + daybg + "' align='right' valign='top'><font face='" + dayfam + "' size=" + daysize + "><b>";
                calendar += "<a href='java script://' onclick=java script:open_window('day_scheduler.html?" + months[mo] + "&" + count + "',300,350,0,1);><font color=" + sdaycol + ">" + count + "</font></a>";
                if(currentmonth == mo && currentyear == year && document.cookie) {
                    var isremind = getCookie(months[mo] + count);
                    if(isremind) { //if a reminder exists for this day
                        isremind = isremind.split("|");
                        calendar += "<p><div align='center'><img src='reminder.gif' width='11' height='11' alt='you have " + isremind.length + " reminder(s)'></div>";
                    }
                }
                calendar += "</b></font></td>";
            } else {
                calendar += "<td width='" + twidth + "' height='" + theight + "' bgcolor='" + daybg + "' align='right' valign='top'><font face='" + dayfam + "' size=" + daysize + ">";
                calendar += "<a href='java script://' onclick=java script:open_window('day_scheduler.html?" + months[mo] + "&" + count + "',300,350,0,1);><font color=" + daycol + ">" + count + "</font></a>";
                if(document.cookie) { //allows reminders to be displayed on other months
                    var isremind = getCookie(months[mo] + count);
                    if(isremind) { //if a reminder exists for this day
                        isremind = isremind.split("|");
                        calendar += "<p><div align='center'><img src='reminder.gif' width='11' height='11' alt='Du har " + isremind.length + " huskeseddel'></div>";
                    }
                }
                calendar += "</font></td>";
            }

            count++;
        }

        calendar += "</tr>";
        calendar += "</table>";
<!-- Day Ends Here -->

    calendar += "</td>";
    calendar += "</tr>";
    calendar += "</table>";

    function open_all(url) {
        child = window.open(url,"allreminders", "width=430,height=400,resizable=0,scrollbars=1");
    }

    function alertReminders() {

        var alertit = getCookie(months[today.getMonth()] + dt);

        if(alertit != null) {
            alertit = alertit.split("|");

            //write out reminders into a string for display
            textit = "  1. " + alertit[0];
            for(var i = 1; i < alertit.length; i++) {
                textit += "\n  " + (i + 1) + ". " + alertit[i];
            }

            //alert user of number of reminders for which day and display those reminders
            alert("Du har " + alertit.length + " huskesedler for " + months[today.getMonth()] + " " + dt + ".\n\n" + textit);
        }
    }

    //-->
    </script>

</head>

<body bgcolor="#ffffff" text="#" link="#" alink="#" vlink="#" topmargin="0" leftmargin="0" marginwidth="0" marginheight="0">
<p>

<div align="center">

<script language="javascript">
<!--
    document.write(calendar);
    if(child && !child.closed) {
        child.focus();
    }
//-->
</script>
</div>
<p>

</body>
</html>


vh
frida
Avatar billede Slettet bruger
05. juni 2003 - 09:12 #1
Du udkommenterer jo den linje, der gør month-arrayet lig med maaneder-arrayet?
Avatar billede Slettet bruger
05. juni 2003 - 09:12 #2
months-arrayet, mente jeg
Avatar billede frida Nybegynder
05. juni 2003 - 09:17 #3
- det er den kun fordi jeg har prøvet lidt frem og tilbage. Hvis den er udkommenteret virker kalenderen fint med engelske månedsnavne - hvis ikke har jeg problemet
Avatar billede Slettet bruger
05. juni 2003 - 09:21 #4
Kan du ikke smide et link i stedet? Vi mangler jo også "cengine.js".
Avatar billede frida Nybegynder
05. juni 2003 - 09:29 #5
Avatar billede eagleeye Praktikant
05. juni 2003 - 09:35 #6
Hvis den skal udskrive DK månede kan du jo her i denne linje:

"<a href='java script://' onclick='open_all(\"all_reminders.html\");'><font color='#ffffff'>" + months[mo] + ", " + year + "</font></a>";


Skifte om så du bruger dit array med DK månederne:


"<a href='java script://' onclick='open_all(\"all_reminders.html\");'><font color='#ffffff'>" + maaneder[mo] + ", " + year + "</font></a>";
Avatar billede frida Nybegynder
05. juni 2003 - 09:43 #7
Nu troede jeg ellers lige, at jeg bare kunne rette arrayet i other_scripts.js

var today = new Date();
   
var dt = today.getDate();
var dy = today.getDay();

var year = today.getFullYear();
var months = new Array("Janar", "Februar ", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December");
var monthlen = new Array(31,checkLeapYear(year),31,30,31,30,31,31,30,31,30,31);
var days = new Array("S ", "M", "T", "O", "T", "F", "L")

var child = "";

function checkLeapYear(theyear) {
    // 1.Years divisible by four are leap years, unless...
    // 2.Years also divisible by 100 are not leap years, except...
    // 3.Years divisible by 400 are leap years.

    if ( ((theyear % 4 == 0) && (theyear % 100 != 0)) || (theyear % 400 == 0) ) {
        return("29");
    } else {
        return("28");
    }
}


function open_window(url,width, height, resize, scroll) {
    child = window.open(url,"newwindow", "width=" + width + ",height=" + height + ",resizable=" + resize + ",scrollbars=" + scroll + "");
}

Men det giver præcis samme resultat.
Jeg prøver din løsning eagleeye
Avatar billede eagleeye Praktikant
05. juni 2003 - 09:48 #8
Den er nok ikke helt godo nok for det jo flere steder det skal laves om. :(


Det går jo nok galt her:
    var first = months[mo] + " 01, " + year;
    firstday = new Date(first);

Den kan finde ud af de når der står UK månedes navne men ikke DK månedes navne. first bliver eksvis til "June 01, 2003"  Og det forståes som dato, hvorimod "Juni 01, 2003" ikke forståes som dato.
Avatar billede eagleeye Praktikant
05. juni 2003 - 09:51 #9
Hvad hvis du laver dette om:

    var first = months[mo] + " 01, " + year;
    firstday = new Date(first);


Til dette,:
    firstday = new Date();
    firstday.setDate(1);
    firstday.setMonth(mo);
    firstday.setFullYear(year);
Avatar billede frida Nybegynder
05. juni 2003 - 09:58 #10
Yes - eagleeye - begge dine forslag virker.
Send et svar - og tak for hjælpen.

frida
Avatar billede eagleeye Praktikant
05. juni 2003 - 10:02 #11
Et svar fra mig ;)
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