| 

.NET C# Java Javascript Exception

2
Hallo,
ich möchte in diesem Monatskalender auf den jeweils aktuellen Tag einen "onMouseover" oder "onClick" Effekt legen.

Sowas in der Art, dass sich ein Fenster öffnet, in dem ich Weiteres posten kann (z.B. um 9:00 Uhr passiert das und das, um 11:00 Uhr das und das usw). Diese Mitteilungen müssen allerdings für jeden Wochentag unterschiedlich sein.
Wie kann ich das lösen? Oder gibt es vielleicht andere Wege ??

Hier das Script:

<script type="text/javascript">
var d = new Date();
var dm = d.getMonth() + 1;
var dj = d.getYear();
if (dj < 999)
dj += 1900;
Kalender(dm, dj);

function Kalender (Monat, Jahr) {
Monatsname = new Array("Januar", "Februar", "M&auml;rz", "April", "Mai", "Juni", "Juli",
"August", "September", "Oktober", "November", "Dezember");
Tag = new Array("Mo", "Di", "Mi", "Do", "Fr", "Sa", "So");

var KSchrArt = "Verdana,Arial"; /* Schriftart Kalenderkopf */
var KSchrGroesse = 2; /* Schriftgroesse 1-7 Kalenderkopf */
var KSchrFarbe = "#9F2323"; /* Schriftfarbe Kalenderkopf */
var Khgrund = "#FFFFFF"; /* Hintergrundfarbe Kalenderkopf */
var TSchrArt = "Verdana,Arial"; /* Schriftart Tagesanzeige */
var TSchrGroesse = 2; /* Schriftgroesse 1-7 Tagesanzeige */
var TSchrFarbe = "#4E4E4E"; /* Schriftfarbe Tagesanzeige */
var Thgrund = "#F1F1F1"; /* Hintergrundfarbe Tagesanzeige */
var SoFarbe = "#E00000"; /* Schriftfarbe f. Sonntage */
var Ahgrund = "#FFC300"; /* Hintergrundfarbe f. heutigen Tag */

var jetzt = new Date();
var DieserMonat = jetzt.getMonth() + 1;
var DiesesJahr = jetzt.getYear();
if (DiesesJahr < 999)
DiesesJahr += 1900;
var DieserTag = jetzt.getDate();
var Zeit = new Date(Jahr, Monat - 1, 1);
var Start = Zeit.getDay();
if (Start > 0) {
Start--;
} else {
Start = 6;
}
var Stop = 31;
if (Monat == 4 || Monat == 6 || Monat == 9 || Monat == 11)
--Stop;
if (Monat == 2) {
Stop = Stop - 3;
if (Jahr % 4 == 0)
Stop++;
if (Jahr % 100 == 0)
Stop--;
if (Jahr % 400 == 0)
Stop++;
}
document.write('<table border="0" cellpadding="2" cellspacing="2">');
var Monatskopf = Monatsname[Monat - 1] + " " + Jahr;
SchreibeKopf(Monatskopf, Khgrund, KSchrFarbe, KSchrGroesse, KSchrArt);
var Tageszahl = 1;
for (var i = 0; i <= 5; i++) {
document.write("<tr>");
for (var j = 0; j <= 5; j++) {
if ((i == 0) && (j < Start)) {
SchreibeZelle("&#160;", Thgrund, TSchrFarbe, TSchrGroesse, TSchrArt);
} else {
if (Tageszahl > Stop) {
SchreibeZelle("&#160;", Thgrund, TSchrFarbe, TSchrGroesse, TSchrArt);
} else {
if ((Jahr == DiesesJahr) && (Monat == DieserMonat) && (Tageszahl == DieserTag)) {
SchreibeZelle(Tageszahl, Ahgrund, TSchrFarbe, TSchrGroesse, TSchrArt);
} else {
SchreibeZelle(Tageszahl, Thgrund, TSchrFarbe, TSchrGroesse, TSchrArt);
}
Tageszahl++;
}
}
}
if (Tageszahl > Stop) {
SchreibeZelle("&#160;", Thgrund, SoFarbe, TSchrGroesse, TSchrArt);
} else {
if ((Jahr == DiesesJahr) && (Monat == DieserMonat) && (Tageszahl == DieserTag)) {
SchreibeZelle(Tageszahl, Ahgrund, SoFarbe, TSchrGroesse, TSchrArt);
} else {
SchreibeZelle(Tageszahl, Thgrund, SoFarbe, TSchrGroesse, TSchrArt);
}
Tageszahl++;
}
document.write("<\/tr>");
}
document.write("<\/table>");
}

function SchreibeKopf (Monatstitel, HgFarbe, SchrFarbe, SchrGroesse, SchrArt) {
document.write("<tr>");
document.write('<td align="center" colspan="7" valign="middle" bgcolor="' + HgFarbe + '">');
document.write('<font size="' + SchrGroesse + '" color="' + SchrFarbe + '" face="' + SchrArt + '"><b>');
document.write(Monatstitel);
document.write("<\/b><\/font><\/td><\/tr>");
document.write("<tr>");
for (var i = 0; i <= 6; i++)
SchreibeZelle(Tag, HgFarbe, SchrFarbe, SchrGroesse, SchrArt);
document.write("<\/tr>");
}

function SchreibeZelle (Inhalt, HgFarbe, SchrFarbe, SchrGroesse, SchrArt) {
document.write('<td align="center" valign="middle" bgcolor="' + HgFarbe + '">');
document.write('<font size="' + SchrGroesse + '" color="' + SchrFarbe + '" face="' + SchrArt + '"><b>');
document.write(Inhalt);
document.write("<\/b><\/font><\/td>");
}
</script>
News:
04.08.2010
Ecki 21 2
3 Antworten
1
Hallo Ecki, vorweg würde ich dir jQuery ans herz legen. Damit sind einige sachen einfacher zu lösen und die auswahl an fertigen plugins ist fast schon unüberschaubar.

function SchreibeZelle (Inhalt, HgFarbe, SchrFarbe, SchrGroesse, SchrArt) {
//Anmerkung: document.createElement("TD") wäre hier besser als document.write
document.write('<td align="center" valign="middle" bgcolor="' + HgFarbe + '" id="kal_entry_'+Inhalt+'" data-inhalt="'+inhalt+'">');
document.write('<font size="' + SchrGroesse + '" color="' + SchrFarbe + '" face="' + SchrArt + '"><b>');
document.write(Inhalt);
document.write("<\/b><\/font><\/td>");
document.getElementById('kal_entry_'+Inhalt).click(fnKalEntryClicked)
}

function fnKalEntryClicked(e){
var target = e.target;
var inhalt = target.getAttribute('data-inhalt');
document.getElementById('divTerminInfo').style.display='block';
document.getElementById('divTerminInfo').style.position='absolute';
document.getElementById('divTerminInfo').style.top=100;
document.getElementById('divTerminInfo').style.left=100;
document.getElementById('divTerminInfo').style.zIndex=100;

document.getElementById('divTerminInfo_Mitteilung').innerHTML('Um '+inhalt +' passiert das und das.');
}

<div id="divTerminInfo">
<p id="divTerminInfo_Mitteilung"></p>
...
</div>
04.08.2010
Floyd 14,6k 3 9
Floyd 14,6k 3 9
0
Hallo Floyd, vielen Dank dafür - ist 'ne gute Lösung! Mit Query tue ich mich immer schwer. Diese vielen einfachen und doppelten Anführungszeichen - da vergesse ich gerne mal eins und dann geht die Fehlersuche los...
Habe mir heute nacht selber etwas zusammengestrickt, was den Zweck voll erfüllt (die Zeit drängte). Die document.write Zeilen werde ich aber noch nach Deinen Anweisungen ändern.

Hier das script (teils noch Blindtext), falls noch jemand sowas sucht:
<script type="text/javascript">
var Today=new Date();
var ThisDay=Today.getDay();
var ThisDate=Today.getDate();
var ThisMonth=Today.getMonth()+1;
var ThisYear=Today.getFullYear();

function DayTxt (DayNumber) {
var Day=new Array();
Day[0]="Sonntag";
Day[1]="Montag";
Day[2]="Dienstag";
Day[3]="Mittwoch";
Day[4]="Donnerstag";
Day[5]="Freitag";
Day[6]="Samstag";
return Day[DayNumber];
}

var DayName=DayTxt(ThisDay);
function MonthTxt (MonthNumber) {
var Month=new Array();
Month[1]="Januar";
Month[2]="Februar";
Month[3]="März";
Month[4]="April";
Month[5]="Mai";
Month[6]="Juni";
Month[7]="Juli";
Month[8]="August";
Month[9]="September";
Month[10]="Oktober";
Month[11]="November";
Month[12]="Dezember";
return Month[MonthNumber];
}
var MonthName=MonthTxt(ThisMonth);
var d = new Date();
var h = d.getHours();
document.write("<TABLE BORDER=1 BGCOLOR=WHITE WIDTH=162 HEIGHT=172 align=center>"+"<TD>"+"<p align=center>"+"<font face=verdana size=4 >"+DayName+"<br>"+"<font face=verdana color=orangered size=+4 >"+ThisDate+"</font>"+"<br>"+MonthName+"<br>"+"<br>"+ThisYear+"<br>"+"</b>"+"</font>"+"</p>"+"</TD>"+"</TR>"+"</TABLE>"+"<br>");

Day = new Date();
Tag = Day.getDay();

Day[0]="Sonntag";
Day[1]="Montag";
Day[2]="Dienstag";
Day[3]="Mittwoch";
Day[4]="Donnerstag";
Day[5]="Freitag";
Day[6]="Samstag";

if(Tag == 0)
{
document.write("<P ALIGN=center>"+"<font face=verdana size=2>"+"<b>"+"Kurse am Sonntag"+"</b>"+"<br><br>"+"SONNTAG"+"</font>"+"</P>");
}
else if(Tag == 1)
{
document.write("<P ALIGN=center>"+"<font face=verdana size=2>"+"<b>"+"Kurse am Montag"+"</b>"+"<br><br>"+"MONTAG"+"</font>"+"</P>");
}
else if(Tag == 2)
{
document.write("<P ALIGN=center>"+"<font face=verdana size=2>"+"<b>"+"Kurse am Dienstag"+"</b>"+"<br><br>"+"DIENSTAG"+"</font>"+"</P>");
}
else if(Tag == 3)
{
document.write("<P ALIGN=center>"+"<font face=verdana size=2>"+"<b>"+"Kurse am Mittwoch"+"</b>"+"<br><br>"+"MITWOCH"+"</font>"+"</P>");
}
else if(Tag == 4)
{
document.write("<P ALIGN=center>"+"<font face=verdana size=2>"+"<b>"+"Kurse am Donnerstag"+"</b>"+"<br><br>"+"DONNERSTAG"+"</font>"+"</P>");
}
else if(Tag == 5)
{
document.write("<P ALIGN=center>"+"<font face=verdana size=2>"+"<b>"+"Kurse am Freitag"+"</b>"+"<br><br>"+"FREITAG"+"</font>"+"</P>");
}
else if(Tag == 6)
{
document.write("<P ALIGN=center>"+"<font face=verdana size=2>"+"<b>"+"Kurse am Samstag"+"</b>"+"<br><br>"+"SAMSTAG"+"</font>"+"</P>");
}
</script>
04.08.2010
Ecki 21 2
1
Statt deiner Aufzählung mit If(Tag == ...) schreib doch:
document.write("<P ALIGN=center>"+"<font face=verdana size=2>"+"<b>"+"Kurse am "+Day[Tag]+"+"</b>"+"<br><br>"+Day[Tag]+"</font>"+"</P>");
Das ist übersichtlicher und wartbarer.
Zum Thema jQuery .. der Code den du mit jQuery schreiben kannst ist 1. wartbarer, 2. übersichtlicher, 3. du kannst viele sachen mit wenigen Zeilen Code lösen für die du normalerweise eine Menege zeilen in normalen Javacript brauchst.
Floyd 04.08.2010
1
Btw. das ist kein Forum ;) Antworten und Anmekrungen bitte als Kommentar hinterlassen und wenn du eine Antwort hilfreich fandest kannst du diese akzeptieren in dem du has Häcken links oben anklickst. ;)
Floyd 04.08.2010
0
Optimierungsvorschläge (ausnahmsweise als eigene Antwort weils zuviel für nen Kommentar ist)

Das Ergbniss ist das selbe nur komm ich mit nur 20 Zeilen statt 79 aus, Ersparnis: 75% Code.
<script type="text/javascript">
var Today=new Date();
var ThisDay=Today.getDay();
var ThisDate=Today.getDate();
var ThisMonth=Today.getMonth();
var ThisYear=Today.getFullYear();

function DayTxt (DayNumber) {
return ["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"][DayNumber];
}

function MonthTxt (MonthNumber) {
return ["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"][MonthNumber];
}

var MonthName = MonthTxt(ThisMonth);
var DayName=DayTxt(ThisDay);

document.write("<TABLE BORDER=1 BGCOLOR=WHITE WIDTH=162 HEIGHT=172 align=center>"+"<TD>"+"<p align=center>"+"<font face=verdana size=4 >"+DayName+"<br>"+"<font face=verdana color=orangered size=+4 >"+ThisDate+"</font>"+"<br>"+MonthName+"<br>"+"<br>"+ThisYear+"<br>"+"</b>"+"</font>"+"</p>"+"</TD>"+"</TR>"+"</TABLE>"+"<br>");

document.write("<P ALIGN=center>"+"<font face=verdana size=2>"+"<b>"+"Kurse am "+DayName+"</b>"+"<br><br>"+DayName.toUpperCase()+"</font>"+"</P>");
</script>
04.08.2010
Floyd 14,6k 3 9

Stelle deine Javascript-Frage jetzt!