Markus_5283: Nach Klick auf Link Seitenwechsel nach 1 Sekunde

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

  1. 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

    --
    __________________________-

    FirefoxMyth
    1. 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

  2. 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

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. 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

      1. 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

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        1. @@EKKi:

          nuqneH

          setTimeout() erwartet genau zwei Parameter. […] Der erste der beiden Parameter hat ein String zu sein

          Nein.

          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'

          --
          Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
    2. @@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'

      --
      Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
      1. 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

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
  3. @@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'

    --
    Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
    1. 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

      1. 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

    2. 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

      --
      __________________________-

      FirefoxMyth
  4. GELÖST
    Vielen Dank an Gunnar Bittersmann, EKKi und bleicher :)