Gå til innhold

kalender med notater


Anbefalte innlegg

jeg er ingen racer på javascript, men har såvidt vært innom basicen. har laget et script som viser dato ( 6. Feb 2008) <-- så simpelt som det der. Jeg lurte på om det går an/er vanskelig å legge inn noen notater, for eksempel programere inn en liten database som gjør at den viser hvem som har bursdag, og hvor gammel han blir?

eksempel:

 

6. Feb 2008

Per fyller 27 år i dag!

 

Er det vanskelig? Holder meg forøvrig kun til xhtml og css..

 

EDIT: håpet var at scriptet kalulerer alderen da ;)

Endret av HulkHaugen
Lenke til kommentar
Videoannonse
Annonse

Jeg fant denne koden, men skulle gjerne har endret litt på den.

- Jeg vil ikke at den skal vise datoen.

- Jeg vil heller ikke at den skal påvirke font, som jeg heller vil definere i css.

- Hvis det ikke er for mye innviklet koding, så vil jeg gjerne at den kalkulerer ut alderen i så måte at jeg legger inn navn på en person med fødselsdato, og det kommer ut "Per fyller 27 år i dag"..

 

<script language="javascript" type="text/javascript">
<!-- // [b]Hva i helsikke gjør den her? er ikke det for å lage et html-notat?[/b]
calendar = new Date();
day = calendar.getDay();
month = calendar.getMonth();
date = calendar.getDate();
year = calendar.getYear();
if (year < 1000)
year+=1900
cent = parseInt(year/100);
g = year % 19;
k = parseInt((cent - 17)/25);
i = (cent - parseInt(cent/4) - parseInt((cent - k)/3) + 19*g + 15) % 30;
i = i - parseInt(i/28)*(1 - parseInt(i/28)*parseInt(29/(i+1))*parseInt((21-g)/11));
j = (year + parseInt(year/4) + i + 2 - cent + parseInt(cent/4)) % 7;
l = i - j;
emonth = 3 + parseInt((l + 40)/44);
edate = l + 28 - 31*parseInt((emonth/4));
emonth--;
var dayname = new Array ("Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag");
var monthname = new Array("Jan ","Feb ","Mars ","April ","Mai ","Juni ","Juli ","Aug ","Sep ","Okt ","Nov ","Des ");
document.write("<b><font face=verdana,arial size=2>");
document.write(dayname[day] + ", ");
document.write(monthname[month] + " ");
if (date< 10) document.write("0" + date + ", ");
else document.write(date + ", ");
document.write(year + " <font color=FF0000>");
// Easter
if ((month == emonth) && (date == edate)) document.write("Easter Sunday (Western) ");
// Januar
if ((month == 0) && (date == 1)) document.write("1. Nyttårdag");
// Februar
if((month == 1) && (date == 14)) document.write("St. Valentine's Day");
// Mars
// April
// Mai
// Juni
if ((month == 5) && (day == 0) && (date > 15) && (date< 24)) document.write("Father's Day");
// July
// August
// September
// October
if ((month == 9) && (date == 31)) document.write("Halloween");
// November
if ((month == 10) && (date == 30) && (day == 4)) document.write("Thanksgiving (USA)");
// December
if ((month == 11) && (date == 24)) document.write("Julaften");
if ((month == 11) && (date == 31)) document.write("Nyttårsaften");
document.write("<br></font></b>");
//-->
</script>

 

EDIT: Kanskje det kan gjøres så enkelt som å legge til year-fødtselsår i if-linjen for de notatene som inneholder bursdager?

Endret av HulkHaugen
Lenke til kommentar

Ok, har fått det til å virke nå *stolt av meg selv*

calendar = new Date();
day = calendar.getDay();
month = calendar.getMonth();
date = calendar.getDate();
year = calendar.getYear();
if (year < 1000)
year+=1900
var dayname = new Array ("Søndag ", "Mandag ", "Tirsdag ", "Onsdag ", "Torsdag ", "Fredag ", "Lørdag ");
var monthname = new Array(". Januar ",". Februar ",". Mars ",". April ",". Mai ",". Juni ",". Juli ",". August ",". September ",". Oktober ",". November ",". Desember ");
document.write(dayname[day]);
document.write(date);
document.write(monthname[month]);
document.write(year);
// Januar
// Februar
if((month == 1) && (date == 6)) document.write("- Per fyller " + [year - 1981] + " år i dag!");
// Mars
// April
// Mai
// Juni
// Juli
// August
// September
// Oktober
// November
// Desember

 

har trimmet bort en del koder som jeg finner unyttig, men det er kanskje noe mere som kan fjernes, forenkles?

har jeg kanskje fjernet noe jeg ikke skulle fjerne også i forhold til forrige post?

den gamle koden (som kun viste dato) så slik ut:

var now = new Date();
var day = new Array("Søndag ","Mandag ","Tirsdag ","Onsdag ","Torsdag ","Fredag ","Lørdag ");
var months = new Array("Jan ","Feb ","Mars ","April ","Mai ","Juni ","Juli ","Aug ","Sep ","Okt ","Nov ","Des ");
var date = now.getDate();
function fourdigits(number)	{return (number < 1000) ? number + 1900 : number;}
today = day[now.getDay()] + date + "." + months[now.getMonth()] + (fourdigits(now.getYear()));
document.write(today);

Endret av HulkHaugen
Lenke til kommentar
Gjest Slettet+1374861

Mye rart du kan finne på for å ordne dette.... Riktignok ville en MySQL database vert mer fornuftig iforhold til å lagre og fetche datoer, men det går jo som du viser i JS også...

 

Mekket noe lite her, som løser samme problem på samme måte. Jeg bruker getFullYear() istedenfor, siden jeg da slipper å ta høyde for tosifret årstall (med tap av noen gamle browsere, men la gå). Kunne vel også laget et objekt for håndtering av sammenheng mellom navn og bursdag slik at man slipper to såpass adskilte arrays, men det ordnet du vøtt!

 

Håndteringen din av mellomrom var også noe ut av en skrekkfilm, så ordnet litt opp i det ved å concatenate-e litt her og der.

 

<!--

// Array Contains name
var friendsNames = new Array(
"Per"
);

// Array contains d,m,y
var friendsBirthday = new Array(
new Array(11, 1, 1981)
);

var calendar = new Date();
var day = calendar.getDay();
var month = calendar.getMonth();
var date = calendar.getDate();
var year = calendar.getFullYear();

var dayName = new Array ("Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag");
var monthName = new Array("Januar", "Februar", "Mars", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Desember");

document.write(dayName[day]+" "+date+". "+monthName[month]+" "+year+"<br />");

for(i = 0; i < friendsBirthday.length; i++)
if(friendsBirthday[i][0] == date && friendsBirthday[i][1] == month)
	document.write(friendsNames[i]+" fyller "+(year-friendsBirthday[i][2])+" år i dag!");

//-->

Endret av Slettet+1374861
Lenke til kommentar

Ja, det er kanskje en bedre løsning det, men jeg føler det ville blitt veldig rotete da jeg har inne rundtom 50 notater i kalenderen min... da er det greit å legge hele funksjonen inn på en linje, syntes nå jeg...

 

Men getFullYear kan jeg jo ta med da...

 

Nå som vi er inne på det, du har vel ikke en oversikt over forskjellige getXxx funsjoner du kan linke meg til?

Lenke til kommentar
Gjest Slettet+1374861

Jepp er penere å få det inn på en linje, derfor jeg tenkte du skulle mekke objekt :p

 

Her er vertfall en link til det meste av "getXxx" (som du så fint kallte det), på Date objektet. Fins jo mange andre koslige objekter å utforske, som kanskje er mer relevante iforhold til JS sin posisjon som clientside også... Men here goes:

http://www.w3schools.com/jsref/jsref_obj_date.asp

Lenke til kommentar

Jeg er for lat til å sette meg inn i SQL, hehe.

 

Kikket på disse getUTCXxx, fungerer de slik at de finner riktig dato og klokke, selv om den lokale klokka di er feil?

 

EDIT: Når jeg nevte getXxx, så lurte jeg på om det går ann å hente annen fiffig info som f.eks. å finne utav ip adresse etc...

Endret av HulkHaugen
Lenke til kommentar
Gjest Slettet+1374861

Laget her den ene funksjonen du trenger for å kunne definere en venn per linje, uten noen logiske sjekker direkte på hver venn... Se på linjen der jeg har brukt funksjonen "addFriend(n, d, m, y);"

 

<!--

var friendsNames = new Array();
var friendsBirthday = new Array();

function addFriend(name, date, month, year)
{
friendsNames.push(name);
friendsBirthday.push(new Array(date, month, year));
}

// My friends:
addFriend("Pål", 11, 1, 1981);

var calendar = new Date();
var day = calendar.getDay();
var month = calendar.getMonth();
var date = calendar.getDate();
var year = calendar.getFullYear();

var dayName = new Array ("Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag");
var monthName = new Array("Januar", "Februar", "Mars", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Desember");

document.write(dayName[day]+" "+date+". "+monthName[month]+" "+year+"<br />");

for(i = 0; i < friendsBirthday.length; i++)
if(friendsBirthday[i][0] == date && friendsBirthday[i][1] == month)
	document.write(friendsNames[i]+" fyller "+(year-friendsBirthday[i][2])+" år i dag!");

//-->

Lenke til kommentar
Gjest Slettet+1374861
Jeg er for lat til å sette meg inn i SQL, hehe.

 

Kikket på disse getUTCXxx, fungerer de slik at de finner riktig dato og klokke, selv om den lokale klokka di er feil?

 

EDIT: Når jeg nevte getXxx, så lurte jeg på om det går ann å hente annen fiffig info som f.eks. å finne utav ip adresse etc...

 

Alle get-greiene til Date fungerer kun opp mot den lokale klokka. Samme gjelder UTC. Eneste den tar hensyn til er å gjøre de rette forandringene for å veie opp for tidssonen din iforhold til UTC (UTC er vel så å si synonymt med GMT).

 

Om det går ann å hente ut andre ting? Jada jada... Men spesifikt IP er litt kinkig i JS tror jeg. Såvidt jeg forstår er det ikke 'standardisert' og må tilpasses for den enkelte nettleser (som forøvrig er overkommelig, men ikke spesielt pent å se på). Vil heller anbefale PHP til den slags.

Lenke til kommentar

Ok, takk skal du ha. men vet ikke om jeg er helt i mål enda.

var friendsNames = new Array();
var friendsBirthday = new Array();

function addFriend(name, date, month, year)
{
friendsNames.push(name);
friendsBirthday.push(new Array(date, month, year));
}

// My friends:
addFriend("Jeg", 12, 11, 1984);

var calendar = new Date();
var day = calendar.getDay();
var month = calendar.getMonth();
var date = calendar.getDate();
var year = calendar.getFullYear();

for(i = 0; i < friendsBirthday.length; i++)
if(friendsBirthday[i][0] == date && friendsBirthday[i][1] == month)
	document.write(friendsNames[i]+" fyller "+(year-friendsBirthday[i][2])+" år i dag!");

if((date == 01) && (month == 0)) document.write("1. Nyttårsdag");
if((month == 1) && (day == 0) && (date > 8) && (date < 14)) document.write("I dag er det morsdag! ");
if((date == 14) && (month == 1)) document.write("I dag er det valentinsdagen");
if((date == 01) && (month == 3)) document.write("I dag er det lov å rundlure folk;-)");
if((date == 17) && (month == 4)) document.write("I dag feirer vi grunnlovsdagen");
if((date == 23) && (month == 5)) document.write("I kveld er det Sankthansaften");
if((date == 31) && (month == 9)) document.write("I dag er det halloween");
if((month == 10) && (day == 0) && (date > 8) && (date < 14)) document.write("I dag er det farsdag");
if((date == 23) && (month == 11)) document.write("I dag er det lille Julaften");
if((date == 24) && (month == 11)) document.write("I dag er det Julaften");
if((date == 25) && (month == 11)) document.write("I dag er det 1.Juledag");
if((date == 26) && (month == 11)) document.write("I dag er det 2.Juledag");
if((date == 31) && (month == 11)) document.write("I dag er det Nyttårsaften");
if((day == 5) && (date == 13)) document.write("Ulykkesdag i dag. Vær forsiktig...");

 

Merkedagene er velt greit å skrive på den måten siden det er en spesifikk kommentar for hver av dem?

 

EDIT: Jeg dumpet den delen som viser datoen, da jeg har det i et eget javascript plassert et annet sted på siden min..

Endret av HulkHaugen
Lenke til kommentar
Gjest Slettet+1374861

Selv ville jeg ikke vert spesielt happy med en laaang liste if-er, men som du nevner noe upraktisk iforhold til at du skal ha "spesifikk kommentar". Går jo naturligvis ann å fikse.. Men ja..

Lenke til kommentar
  • 1 måned senere...
Denne skal puttes inn i html-koden ikke sant?

hva er koden for det igjen?

nja, det er mulig, men veldig rotete spør du meg. skriv heller koden inn i et tomt notepad-dokument, og lagre fila som calendar.js eller hva du føler for. deretter setter du inn følgende i html-filen din:

 

<script type="text/javascript" src="calendar.js"></script>

 

EDIT: Kom til å tenke på det, hvorfor vil ikke xhtml 1.0 strict godkjenne følgende kode:

<script type="text/javascript" src="calendar.js" />

Det er jo slik alle andre koder føres dersom de ikke "omringer" en eller flere andre koder..

Endret av HulkHaugen
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...