HulkHaugen Skrevet 6. februar 2008 Del Skrevet 6. februar 2008 (endret) 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 6. februar 2008 av HulkHaugen Lenke til kommentar
HulkHaugen Skrevet 6. februar 2008 Forfatter Del Skrevet 6. februar 2008 (endret) 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 6. februar 2008 av HulkHaugen Lenke til kommentar
HulkHaugen Skrevet 6. februar 2008 Forfatter Del Skrevet 6. februar 2008 (endret) 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 6. februar 2008 av HulkHaugen Lenke til kommentar
Gjest Slettet+1374861 Skrevet 11. februar 2008 Del Skrevet 11. februar 2008 (endret) 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 11. februar 2008 av Slettet+1374861 Lenke til kommentar
HulkHaugen Skrevet 11. februar 2008 Forfatter Del Skrevet 11. februar 2008 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 Skrevet 11. februar 2008 Del Skrevet 11. februar 2008 Jepp er penere å få det inn på en linje, derfor jeg tenkte du skulle mekke objekt 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
HulkHaugen Skrevet 11. februar 2008 Forfatter Del Skrevet 11. februar 2008 (endret) 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 11. februar 2008 av HulkHaugen Lenke til kommentar
Gjest Slettet+1374861 Skrevet 11. februar 2008 Del Skrevet 11. februar 2008 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 Skrevet 11. februar 2008 Del Skrevet 11. februar 2008 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
HulkHaugen Skrevet 11. februar 2008 Forfatter Del Skrevet 11. februar 2008 (endret) 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 11. februar 2008 av HulkHaugen Lenke til kommentar
Gjest Slettet+1374861 Skrevet 11. februar 2008 Del Skrevet 11. februar 2008 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
gukki Skrevet 13. mars 2008 Del Skrevet 13. mars 2008 Denne skal puttes inn i html-koden ikke sant? hva er koden for det igjen? Lenke til kommentar
HulkHaugen Skrevet 13. mars 2008 Forfatter Del Skrevet 13. mars 2008 (endret) 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 13. mars 2008 av HulkHaugen Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå