Nach Klick auf Link Seitenwechsel nach 1 Sekunde
Markus_5283
- javascript
0 bleicher0 EKKi0 Gunnar Bittersmann0 Markus_5283
Guten Abend,
bin ein Javascript Anfänger und versuche gerade, dass nach einem Klick auf einen Link die Seite erst nach 1 Sekunde gewechselt wird.
Bin echt am verzeifeln was ist falsch am Code?
<head>
<script>
function verlassen (url) {
window.setTimeout("document.location.href = url;", 1000);
}
</script>
<a href="javascript:verlassen('home.html')">hahaha</a>
Viele Grüße
Markus
Grüße,
window.setTimeout("document.location.href = url;", 1000);
url ist was?
variable?
und wo platziert man die variablen?
tipp -achte auf die ""
MFG
bleicher
Grüße,
window.setTimeout("document.location.href = url;", 1000);
url ist was?
variable?
und wo platziert man die variablen?
tipp -achte auf die ""
Hallo,
bin den code noch mal durchgegangen
window.setTimeout("document.location.href = url;", 1000);
das ; nach url muss weg oder?
und wo platziert man die variablen?
da wo man sie braucht oder? (verstehe die Frage nicht so richtig :))
tipp -achte auf die ""
da url kein wert ist müssen keine "" bzw '' drumherum oder ist das falsch
Viele Grüße
Mahlzeit Markus_5283,
Bin echt am verzeifeln was ist falsch am Code?
Einiges. Fangen wir mal beim Formalen an:
<script>
Es fehlt das <http://de.selfhtml.org/html/referenz/attribute.htm#script@title=zwingend erforderliche "type"-Attribut>.
function verlassen (url) {
Du definierst hier also eine Funktion, die genau einen Funktionsparameter hat. Allerdings wird dieser während der gesamten Funktion nicht einmal benutzt ...
window.setTimeout("document.location.href = url;", 1000);
Hier setzt Du einen http://de.selfhtml.org/javascript/objekte/window.htm#set_timeout@title=Timeout - allerdings hast Du dabei das "Beachten Sie:" nicht beachtet ... das ist meistens keine gute Idee, denn "Beachten Sie:" heißt nicht umsonst genau so, wie es heißt - man sollte es schon beachten.
Erklärung: Nach genau 1000 Millisekunden wird also der Code "document.location = url;" ausgeführt. Zum Ausführungszeitpunkt existiert allerdings keine Variable namens "url". Also kann deren Inhalt auch nicht der href-Eigenschaft des location-Obekts des aktuellen Dokuments zugewiesen werden.
MfG,
EKKi
Guten Abend,
type ist eingefügt,
nun zu der variable:
so wie ich das verstanden habe soll ich die Variable übergeben
window.setTimeout(var seitenname = url;
"document.location.href = seitenname;", 1000);
so in etwa?
Viele Grüße
Markus
Mahlzeit Markus_5283,
auch wenn Dein Problem inzwischen gelöst ist, möchte ich diese Frage noch gern beantworten - und wenn's nur fürs Archiv ist:
window.setTimeout(var seitenname = url;
"document.location.href = seitenname;", 1000);so in etwa?
Nein, so nicht. http://de.selfhtml.org/javascript/objekte/window.htm#set_timeout@title=setTimeout() erwartet genau zwei Parameter. Es erwartet insbesondere *nicht* irgendwelche durch Semikolon getrennte Anweisungen.
Der erste der beiden Parameter hat ein String zu sein, in dem sich JS-Code befindet. Der Code "document.location.href = url;" bringt absolut nichts, denn zum Zeitpunkt und im Kontext der Ausführung existiert keine Variable namens "url" - diese existiert nur innerhalb der Funktion. Wenn Du also den Inhalt dieser Variablen in den Code, der nach dem Timeout ausgeführt werden soll, einbauen willst, dann tu das über einfachste Stringverkettung:
window.setTimeout("document.location.href = '" + url + "'", 1000);
MfG,
EKKi
@@EKKi:
nuqneH
setTimeout() erwartet genau zwei Parameter. […] Der erste der beiden Parameter hat ein String zu sein
Wenn Du also den Inhalt dieser Variablen in den Code, der nach dem Timeout ausgeführt werden soll, einbauen willst, dann tu das über einfachste Stringverkettung:
Nein, besser nicht.
Qapla'
@@EKKi:
nuqneH
Es fehlt das <http://de.selfhtml.org/html/referenz/attribute.htm#script@title=zwingend erforderliche "type"-Attribut>.
Kann man so nicht (mehr) sagen.
Für HTML 4/XHTML 1 hast du natürlich recht.
Für HTML 5 nicht. [HTML5 §4.3.1]
Qapla'
Mahlzeit Gunnar Bittersmann,
Es fehlt das <http://de.selfhtml.org/html/referenz/attribute.htm#script@title=zwingend erforderliche "type"-Attribut>.
Kann man so nicht (mehr) sagen.
Für HTML 4/XHTML 1 hast du natürlich recht.
Für HTML 5 nicht. [HTML5 §4.3.1]
Da Markus_5283 keinen Dokumenttyp genannt hat, gehe ich vom bisher Üblichen aus - und das ist maximal HTML 4.01 bzw. XHTML 1.1 ... dass HTML 5 released ist, wäre mir neu.
MfG,
EKKi
@@Markus_5283:
nuqneH
Guten Abend,
bin ein Javascript Anfänger und versuche gerade, dass nach einem Klick auf einen Link die Seite erst nach 1 Sekunde gewechselt wird.
Bin echt am verzeifeln was ist falsch am Code?
Die wichtigere Frage ist: Was ist falsch am Konzept?
Ein Nutzer sollte auf eine Aktion SOFORT ein Reaktion des Systems bekommen, nicht erst nach 1 Sekunde. Woher soll der Nutzer in der Zwischenzeit erkennen, dass das System seine Aktion überhaupt verarbeitet? Und warum soll ein Nutzer unnötig lange warten müssen?
Was ist falsch am Code?
Die Schreibweise als String.
function verlassen(url)
{
window.setTimeout(function () { document.location.href = url; }, 1000);
}
Qapla'
Ein Nutzer sollte auf eine Aktion SOFORT ein Reaktion des Systems bekommen, nicht erst nach 1 Sekunde. Woher soll der Nutzer in der Zwischenzeit erkennen, dass das System seine Aktion überhaupt verarbeitet? Und warum soll ein Nutzer unnötig lange warten müssen?
Hallo,
nunja ich will mit hilfe von jquery die seiten ein und ausblenden. Und fürs ausblenden brauch ich vorher noch zeit :D
Moin!
nunja ich will mit hilfe von jquery die seiten ein und ausblenden. Und fürs ausblenden brauch ich vorher noch zeit :D
jQuery erlaubt dir bei eigentlich allen zeitbasierten Aktionen, nach Abschluss derselben eine nachfolgende Funktion aufzurufen. Gerne als "callback" in der Dokumentation bezeichnet. Die solltest du nutzen, um nach dem Blenden die Seite zu wechseln.
- Sven Rautenberg
Grüße,
warum soll ein Nutzer unnötig lange warten müssen?
damit es wichtig wirkt^^
eine Firma hat ihre webseite Sperren lassen, da der Besucherzähler erbärmlich war - da packten sie einfach dauerhafte "Server überladen" Meldung drauf um gefragter zu wirken.
mit der Wartezeit oder Fortschrittsbalken kann man Versuchen die Komplexität und somit die Wichtigkeit der stattfinden Operationen vorzutäuschen.
MFG
bleicher
GELÖST
Vielen Dank an Gunnar Bittersmann, EKKi und bleicher :)