Lenny: 2 Zeit-Scripte in einer Zeile ausführen, nur wie??

Hy Leute,
ich bastel jetzt schon über einen Tag an denen 2 Scripten und versuch, die in eine Zeile zu bekommen, so dass die Ansage alles in einer Zeile steht: Guten Tag(Morgen, Abend) liebe Besucher, heute ist Montag, der .... usw. . Nur funktioniert es nicht und ich bin am verzweifeln, weil ichnicht herausfinde, wo der Fehler liegt.

Wer kann mir helfen??

<td><script language="JavaScript">
<!--
var gruss = "";
var heute = new Date();
var stunde=heute.getHours();
if (stunde >=18) gruss = "Guten Abend";
if (stunde <12) gruss = "Guten Morgen";
if (stunde >= 12 && stunde < 18)
gruss = "Guten Tag";
document.write(gruss);
//-->
</script> liebe Besucher,

<script type=text/javascript>
<!--
Wochentagname=
new Array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag",
"Samstag");
Monatsname=
new Array("Januar","Februar","März","April","Mai","Juni","Juli","August",
"September","Oktober","November","Dezember");
function ZeitAnzeigen()
{var Jetzt=new Date();
var Tag=Jetzt.getDate();
var Monat=Jetzt.getMonth();
var Jahr=Jetzt.getYear();
var WoTag=Jetzt.getDay();
var Stunden=Jetzt.getHours();
var Minuten=Jetzt.getMinutes();
var Sekunden=Jetzt.getSeconds();
var Vorjahr=((Jahr<2000)?"19":"");
var Vormin=((Minuten<10)?":0":":");
var Vorsek=((Sekunden<10)?":0":":");
var Datum=Tag+". "+Monatsname[Monat]+" "+Vorjahr+Jahr;
var Uhrzeit=Stunden+Vormin+Minuten+Vorsek+Sekunden;
var Gesamt="Heute ist " +Wochentagname[WoTag]+ ","+" der&nbsp;"+Datum+"&nbsp; "+Uhrzeit+" Uhr";
if(document.all)
document.all.MicrosoftUhr.innerHTML=Gesamt;
else if(document.layers)
{document.NetscapeUhr.document.open();
Gesamt='<SPAN CLASS="Uhr">'+Gesamt+'</SPAN>';
document.NetscapeUhr.document.write(Gesamt);
document.NetscapeUhr.document.close();}
window.setTimeout("ZeitAnzeigen()",142);}
// -->
</script></td>

  1. Hallo Lenny,

    ich finde Du machst es recht umständlich und mit veralteter Technik.

    var heute = new Date();

    Wenn Du dies einmal geholt hast, kannst Du davon alle gewünschten Parameter ableiten, es verfällt nicht zwischen den Script-Tags. Günstiger wäre es aber gleich alles in einem zusammenhängenden Script zu schreiben.

    Wie Du die Zeiten ermittelst, weißt Du. Die Methoden, um an den Tag, die Stunde usw. ran zu kommen, hast Du auch gefunden.

    Für die Darstellung letztlich würde ich einen anderen Weg vorschlagen. Du fügst in Deinem Dokument ein P-Tag oder eine Hx-Tag ein, der bereits "Liebe Besucher" enthält. Das ist nötig, damit auch User ohne JS begrüßt werden. Nun muss vor und hinter diesen etwas gesetzt werden. Einmal die "Guten .." davor und zum anderen das aktuelle Datum dahinter.

    Das Datum setzt Du im Script zusammen, wie es Dir beliebt.

    Hier hast Du mehrere Möglichkeiten. Recht einfach lässt es sich mit zwei SPAN-Tags realisieren:

    <p id="clock"><span>&nbsp;</span>Lieber Besucher<span>&nbsp;</span></p>

    Mit Hilfe einer der getElement(s)By Methoden bekommst Du den P-Tag "gefasst" und automatisch auch die SPANs, die er beinhaltet. Mittels replaceData() tauschst Du den Inhalt des jeweiligen SPANs aus. Dein Script könnte dann so in etwa aussehen:

      
      
       function setClock(){  
        var week = new Array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");  
        var month = new Array("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");  
      
        var now = new Date();  
        var d  = now.getDate();  
        var day  = now.getDay();  
        var m  = now.getMonth();  
        var y  = now.getFullYear();  
        var hh  = now.getHours();  
        var firststr = new String();  
        var laststr = new String();  
        if (hh >=18)  
         firststr = "Guten Abend ";  
        else if (hh <12)  
         firststr = "Guten Morgen ";  
        else if (hh >= 12 && hh < 18)  
         firststr = "Guten Tag ";  
        laststr += ". Heute ist "+week[day]+", der "+d+". "+month[m]+" "+y;  
      
      
        if (document.getElementById)  
         var clock = document.getElementById("clock");  
         clock.getElementsByTagName("span")[0].firstChild.replaceData(0, firststr.length, firststr);  
         clock.getElementsByTagName("span")[1].firstChild.replaceData(0, laststr.length, laststr);  
       }  
       window.onload = setClock;
    

    Mit freundlichem Gruß
    Micha

    --
    LeagueEditor JavaScript kostenlose Ligaverwaltung || richtig Messen will gelernt sein
    1. Hy Leute,

      danke erst mal. Hab des gleich ausprobiert, aber irgendwie funzt des net so richtig. Muss dazu sagen, des große Script hab ich 2001 oder 2002 ich glaub aus dem PC-Magazin abgetippt und nur noch " Heute ist " dazu gefügt.

      Das kurze Script hab ich aus nen Lehrbuch für Javascript Anfänger abgetippt.

  2. Hi,

    erstmal würde ich die gesamte Script-Scection aus dem td rausnehmen. Ich schreibe JS-Code immer in den head-Bereich.

    In dem JS-Bereich musst du halt alle Variablen bekommen, wie du das bereits getan hast. Um den Text bzw. den Gruß dann ausgeben zu können, schau dir einfach mal die "Funktion" innerHTML an.

    Damit kannst du jedes beliebige Element, (td, div, p usw.) füllen:

    • Du gibts deinem td z.B. die ID gruss.
    • Dann sagst du am Ende deines Scriptes:

    - document.getElementById("gruss").innerHTML = ...

    • Nach dem Gleichzeichen schreibst du dann deine Variable hin:
      In etwa so:

    = gruss + " liebe Besucher. " +Gesamt;

    Ob der Syntax jetzt 100%ig stimmt, weiß ich nicht. Habe ich jetzt auf die Schnelle geschrieben.

    Grüße,
    Thorsten F.