Ralf: window.setTimeout mit window.location.href ?!?!

Hallo,

mir ist das richtig peinlich, dass ich an so einer Funktion scheitern muss aber irgendwie ist es mir ein Phänomen:

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

function moveForward(address, time) {
window.setTimeout("window.location.href = address", time);
}

//-->
</script>
<title>PHP - Calendar: Insert Date</title>
</head>
<body>

<input type="button" onClick="moveForward('http://www.thecorp.de', '3000')" value="Forward">

Wieso spuckt mir das Script hier aus "address is undefined." ?
Wenn ich unmittelbar vor dem setTimout den Funktionsaufruf
alert(address);
mache gibt mir das Script doch auch "http://www.thecorp.de" aus...

Wäre nett wenn mir jemand mit nem Hammer auf den Hinterkopf schlägt. Ist ja sowas von peinlich ...

MFG Ralf

  1. »»Hallo,

    mir ist das richtig peinlich, dass ich an so einer Funktion scheitern muss aber irgendwie ist es mir ein Phänomen:

    Hatte ich auch schon paar mal.

    <input type="button" onClick="moveForward('http://www.thecorp.de', '3000')" value="Forward">

    Verweise auf funktionen in JavaScript mit: javascript:funktion
    Bei dir also:
    onClick="javascript:moveForward('http://www.thecorp.de', '3000')"
    Vielleicht war das das Problem.

    MFG Ralf

    Gruss hannibal

    1. hi,

      Verweise auf funktionen in JavaScript mit: javascript:funktion

      onClick="javascript:moveForward('http://www.thecorp.de', '3000')"

      ganz grosser bullshit.
      wo hast du das denn her?

      das label javascript: hat in eventhandlern nichts verloren, kann sogar u.u. zu fehlern führen.

      gruss,
      wahsaga

      1. hi,

        hallo auch

        Verweise auf funktionen in JavaScript mit: javascript:funktion

        onClick="javascript:moveForward('http://www.thecorp.de', '3000')"

        ganz grosser bullshit.

        Jetzt hab ichs auch bemerkt. Ich habe da was verwechselt.
        Ich dachte es wäre in <a href="">

        I'm sorry.

        gruss,
        wahsaga

        Gruss Hannibal

    2. Nabend,

      Verweise auf funktionen in JavaScript mit: javascript:funktion
      Bei dir also:
      onClick="javascript:moveForward('http://www.thecorp.de', '3000')"

      Nein, das ist es nicht. Zudem ist dieser Vorschlag nicht schön. javascript: ist völlig sinnfrei. Das onclick-Event ist für JS-Funktionen geschaffen; es bedarf also keinerlei Pseudoprotokolle vor einem Funktionsaufruf (nein, auch in href hat javascript: nichts verloren, ebensoviel wie ein Funktionsaufruf).

      Das Problem liegt eher bei der Übergabe von adresse. Lies noch einmal in SelfHTML nach: http://selfhtml.teamone.de/javascript/objekte/window.htm#set_timeout

      Bis denne,

  2. mir ist das richtig peinlich, dass ich an so einer Funktion scheitern muss aber irgendwie ist es mir ein Phänomen:

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

    function moveForward(address, time) {
    window.setTimeout("window.location.href = address", time);
    }

    //-->
    </script>
    <title>PHP - Calendar: Insert Date</title>
    </head>
    <body>

    <input type="button" onClick="moveForward('http://www.thecorp.de', '3000')" value="Forward">

    Wieso spuckt mir das Script hier aus "address is undefined." ?
    Wenn ich unmittelbar vor dem setTimout den Funktionsaufruf
    alert(address);
    mache gibt mir das Script doch auch "http://www.thecorp.de" aus...

    Guter Ansatz, wenn du noch überprüft hättest was du der Funktion setTimeout übergibst wärst du der Lösung nah gewesen:
    alert("window.location.href = address");

    address ist aber nur eine lokale Variabel die nur deiner Funktion bekannt ist, da setTimeout aber erst nach 3 Sekunden startet ist deine Funktion mit grossser Wahrscheinlichkeit beendet und damit address nirgendwo mehr definiert.

    Du willst den Wert von address zuweisen, dazu musst du ein wenig basteln, da der Wert ein String ist, muss er auch in Anführungszeichen stehen:

    window.setTimeout( 'window.location.href = "' + address + '"', time);

    Struppi.