Datenschutzerklärung

setInterval im document

Validome - Forum

Startseite Validome
RSS 2.0  
Sie sind nicht angemeldet. Atom 1.0  
Forum Home / Javascript-Forum /

setInterval im document

  Beitrag schreiben
Autor
Beitrag Seiten: 1
Master_Mane
Gast



Hallo,

Ich habe seit kurzem angefangen JavaScript zu lernen. Ich habe mir einen Countdown geschrieben, und habe diesen zuerst in der Statusleiste mittels "window.status" ausgegeben und ihn mit "window.setInterval" sekündlich angepingt.

Da ich die aktuelle Zeitspanne ja jetzt aber mit "document.write" ausgeben will, funktioniert das mit dem Anpingen nicht mehr.
Ich habe schon alles mögliche versucht, jedoch macht er nur bei "window.setInterval" etwas. Leider führt er nicht die gewünschte Aktion aus, sondern versucht lediglich die Seite neuzuladen, was nicht gelingt, und so lädt er ewig ohne ein Resultat.

Ich vermute, dass es i-wie an den Objekten liegt.

Ich habe eine Funktion "down()" erstellt, die Tage, Stunden, Minuten und Sekunden in einem "<input>"-tag ausgibt.
Dann versuche ich sie mit "window.setInterval('down()',1000);" anzupingen. Funzt nicht.

Wäre schön, wenn ihr mir weiterhelfen könnt.

Gruß
Manuel


31.03.2008 16:26:02
  Zitieren
HTMELL
Administrator

Registriert: 11.05.2006
Beiträge: 544
Hi,
wie sollen wir ohne Code helfen? Poste doch mal Deinen Code und schon wird geholfen ;-)


_______________________________________
mfg
Thomas Mell

www.validome.org

31.03.2008 19:21:22
  Zitieren
Master_Mane
Gast



Naja, war doch ausführlich beschrieben...!?
Ihr wollt wohl nur nen Countdown für lau :D Ne, Spaß, bitteschön:

_So wie er läuft:_

<script type="text/javascript">
<!--

    function down()
    {
        seks  = countEnde - (new Date().getTime() / 1000).toFixed(0);
       
        days   = Math.floor(seks / (60*60*24));
        seks   = seks % (60*60*24);

        hours  = Math.floor(seks / (60*60));
        seks   = seks % (60*60);

        mins   = Math.floor((seks / 60));
        seks   = seks % 60;
       
        act    = new Array();
        act[0] = days;
        act[1] = hours;
        act[2] = mins;
        act[3] = seks;
       
        for (i = 0 ; i < 4 ; i++)
        {
            if (act[i] < 10.0)
            {
                act[i] = '0' + act[i];
            }
        }

        window.status = 'Nur noch '  + act[0] + ' Tage, ' + act[1] + ' Stunden ' + act[2] +     ' Minuten und ' + act[3] + ' Sekunden bis zu Manuels Geburtstag!';
    }
 
 
    countEnde = new Date(2008,6,28,0,0,0).getTime() / 1000;   //YY,MM-1,DD  ,  HH,MM,SS
    countEnde = countEnde.toFixed(0);
   
    window.setInterval('down()',1000);

-->
</script>


_So wie ich es gerne hätte:_

<script type="text/javascript">

<!--

    function down()
    {
        seks  = countEnde - (new Date().getTime() / 1000).toFixed(0);

        days   = Math.floor(seks / (60*60*24));
        seks   = seks % (60*60*24);

        hours  = Math.floor(seks / (60*60));
        seks   = seks % (60*60);

        mins   = Math.floor((seks / 60));
        seks   = seks % 60;

        act    = new Array();
        act[0] = days;
        act[1] = hours;
        act[2] = mins;
        act[3] = seks;

        for (i = 0 ; i < 4 ; i++)
        {
            if (act[i] < 10.0)
            {
                act[i] = '0' + act[i];
            }
        }

        outprint = 'Nur noch ' + act[0] + ' Tage, ' + act[1] + ' Stunden ' + act[2] + ' Minuten und ' + act[3] + ' Sekunden bis zu Manuels Geburtstag!';
        outprint = '<input size=\"90\" value=\"' +  outprint + '\">';
        document.write(outprint);
    }


    countEnde = new Date(2008,6,28,0,0,0).getTime() / 1000;   //YY,MM-1,DD  ,  HH,MM,SS
    countEnde = countEnde.toFixed(0);

    down();

    window.setInterval('down()',1000);

-->
</script>


01.04.2008 18:06:18
  Zitieren
HTMELL
Administrator

Registriert: 11.05.2006
Beiträge: 544
Hi,
denk mal nach ;-)
"Wo" soll document.write das input-Element hinschreiben?
Hinter das body-Element, in ein p-Element oder wo?
Das kann natürlich nicht funktionieren weil eine solche Angabe nicht möglich ist. Document.write funktioniert nur beim aufbau des Dokumentes und schreibt an die Stelle wo es sich befindet. Wenn das Dokument fertig geladen ist, kann mit document.write nichts mehr "geschrieben" werden.
Um ein Dokument im nachhinein zu ändern must Du DOM bemühen.

Noch ein Problem. So wie Du die Sache programmiert hast wird jede Sekunde ein input-Element ins Dokument geschrieben (wenn es  denn funktionieren würde) - das soll sicher nicht so sein?!
Schreibe das input-Element ins HTML und gib dem Teil ein name-Attribut (vergiss das form-Element nicht). Nun kannst Du den Wert des input-Elementes mit document.FORMULARNAME.INPUT_ELEMENT_NAME.value = outprint; ändern.


_______________________________________
mfg
Thomas Mell

www.validome.org

01.04.2008 19:35:46
  Zitieren
Chiaki
Mitglied

Ort: Germany (81825)
Registriert: 23.12.2007
Beiträge: 95
Hallo,

das entsprechende (X)HTML-Element könntest du auch über eine ID ansprechen:
"document.getElementById('countdown').value = outprint" -- wenn das
betreffende Element mit dem ID-Attribut id="countdown" ausgerüstet ist.
Nur so als Ergänzung zu HTMELL's Vorschlag.

Greetings, Chiaki


_______________________________________
Make sure You've read RFC 1855, before sending electronic mail,
start Chats, posting on Newsgroups or leave any Comments.
RFC 1855: Netiquette Guidelines <http://www.rfc1855.net/>

01.04.2008 19:40:45
http://www.rfc1855.net/ Zitieren
Master_Mane
Gast



Hey, danke euch beiden, funktioniert astrein =)

Noch ne kleine "Schönheitsfrage":
Wäre es besser, das gesamte Script in den head der html-Datei zu schreiben,
nur die Funktion in den head oder einfach alles so lassen wie es ist (also im body)?

Danke & Gruß


02.04.2008 14:03:35
  Zitieren
Chiaki
Mitglied

Ort: Germany (81825)
Registriert: 23.12.2007
Beiträge: 95
Hallo,

der Vorteil an ausgelagertem JS: hält das HTML sauber und erspart insbesondere bei
Scripten im <head>-Bereich viel Kopfzerbrechen über Validation und anderes.
Der Nachteil: jedes ausgelagerte Element muß mit einem eigenen HTTT-Request
angefordert und kann faktisch von jeder Website weltweit "geklau-referenziert" werden.

Die Entscheidung darüber liegt bei dir :-) Prinzipiell sind ausgelagerte JS-Sachen aber
eher zu empfehlen, jedenfalls meine Meinung. Abgesehn von Event-Handlern sollte das
(X)HTML schön frei von Layout und Scripting gehalten werden.

Greetings, Chiaki

Beitrag geändert von Chiaki (02.04.2008 16:25:22)


_______________________________________
Make sure You've read RFC 1855, before sending electronic mail,
start Chats, posting on Newsgroups or leave any Comments.
RFC 1855: Netiquette Guidelines <http://www.rfc1855.net/>

02.04.2008 16:24:20
http://www.rfc1855.net/ Zitieren
HTMELL
Administrator

Registriert: 11.05.2006
Beiträge: 544
Hi,
ein weiterer Vorteil von ausgelagertem JS ist der Browsercache.
Wenn der JS in mehreren Dokumenten verwendet wird, dann lädt der Browser dieses nur einmalig und hält die Dokumente schlanker.
Weiterhin hat dies den Vorteil das bei Änderungen am JS diese nur in einer einzigen Datei vorgenommen werden müssen und nicht in x Dokumenten.
Selbiges gilt natürlich auf für CSS - immer schön auslagern, spart später Unmengen an Arbeit bei der Pflege.


_______________________________________
mfg
Thomas Mell

www.validome.org

02.04.2008 16:32:29
  Zitieren
Seiten: 1   Beitrag schreiben
Wechsel zu

Die letzten Beiträge aus diesen Forum

Valid HTML 4.01