|
|
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 |
|
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 |
|
|
|
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 |
|
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 |
|
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 |
|
|
|
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 |
|
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 |
|
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 |
|
Wechsel zu
Die letzten Beiträge aus diesen Forum
|
|