Wie kann ich via javascript eine url als Variable übergeben

Hallo,
ich habe ein simple js:

function weiterleitung(wohin) {
setTimeout('location.href=www.google.de’,1000);
}

Und dann

onsubmit=„weiterleitung()“

Das funktioniert.
Nun möchte ich für ein Projekt das Ganze dynamischer gestalten, so dass die location als Variable übergeben wird.
Nur passiert leider nichts.

=>
onsubmit=„weiterleitung(‚index.php‘)“

function weiterleitung(wohin) {
setTimeout(‚location.href=+wohin‘,1000);
alert(wohin);
}

Das alert funktioniert korrekt. Auch ohne + passiert leider nichts.
Any idea? Danke für Mühe un einen Hinweis.
mfG
Oliver

Hallo,

der Code sorgt dafür, dass nach einer Sekunde der folgende Befehl ausgeführt wird:

location.href=+wohin;

wohin ist an dieser Stelle aber nicht definiert, weil die Funktion (da du sie als String angegeben hast) nicht innerhalb deiner Funktion weiterleitung aufgerufen wird und damit keinen Zugriff mehr auf die Argumente hat.

Das ist auch einer der vielen Gründe, warum man setTimeout nicht mit einem String benutzt, sondern mit einer Funktion:

function machWasAberSpäter (nachricht) {
 window.setTimeout(
 function () {
 window.status += nachricht;
 },
 1000
 );
}

Wenn du das auf dein Problem umschreibst, achte bitte auch auf die Reihenfolge des + und = beim Verkettungszuweisungsoperator. Deine Version =+ bedeutet etwas anderes als du vermutlich denkst.

Viele Grüße,

Amica

die Lösung ist ganz einfach:

setTimeout(„location.href=’“+wohin+"’;",1000);

online-demo:
http://jsbin.com/itorit/8/edit

Sorry,

da bin ich überfragt.

Hallo,
waow, das war schnell.
Da sheißt, ich muß zwei Funktionen aufrufen?

"
von amicanoctis , 29.07.2013 11:08
Hallo,

der Code sorgt dafür, dass nach einer Sekunde der folgende Befehl ausgeführt wird:
mehr solls ja auch nicht tun. Die Variable ist also nicht automatisch bekannt, sobald die an die Funktion übergeben wird?

Hurra,
danke für die Superschnelle Antwort!!
Einfach ists wenns man weiß.

)

Trotzdem Danke für den schnelle Antwort
!

> Die Variable ist also nicht automatisch bekannt,
> sobald die an die Funktion übergeben wird?

Doch, wenn man Funktionen nimmt, schon. Bei Strings (als Argument an setTimeout) klappt es aber nicht. In meinem Beispiel kann die innere Funktion auf die Variable „nachricht“ aus der äußeren Funktion zugreifen.

Wenn du es genauer wissen willst, kannst du dich über Closures in JavaScript informieren, denn das ist ein Thema, was hier den Rahmen sprengen würde.

Nimm einfach den Beispielcode und passe ihn an dein Problem an.

Hi Oliver,

ich verstehe Dein Problem nicht ganz!
Was willst Du machen?

Wenn Du eine automatische Weiterleitung einrichtest, (sagt schon der Name) wird der User auf eine Seite weitergeleitet. Wie soll das dann dynamisch funktionieren.

Gib mir doch mal ein Beispiel wie Du das einsetzen willst.

PS: Ich benutze eine automatische Weiterleitung nur, mit einer abfrage ob JavaScript aktiv ist.

LG Chrissie

> Da sheißt, ich muß zwei Funktionen aufrufen?

Nein, du rufst machWasAberSpäter auf und die Engine (der Browser) ruft dann nach 1sec selbst die innere (anonyme) Funktion auf. Die musst du nur definieren.

Hallo,

probiere mal so:

function weiterleitung(wohin) {
setTimeout(function(){window.location.href = wohin;},1000);
}

Beste Grüße,
Can

<!–

function weiterleitung(wohin) {
alert("Weiterleitung zu " + wohin);
setTimeout(function(){window.location = wohin, 2000} );
}

//–>

mit einem Link:

[klick mich](javascript:weiterleitung(‚http://www.web-toolbox.net‘))

mit EventHandler:

onsubmit=„weiterleitung(‚index.php‘)“

kein Problem :smile:
Gerne wieder

Hi,
ich glaube es muss einfach:

setTimeout(‚location.href=‘+wohin,1000);

heißen. Also das ein Hochkomma versetzt …

LG

function weiterleitung(wohin) {
setTimeout(function() { location = wohin; }, 1000);
}

so würde ich es machen. warum du dieses + da gemacht hast, versteh ich nicht.

MfG Ruppi

Versuch mal
setTimeout(‚location.href=‘+wohin,1000);

Hi,
Danke!
Die Lösung:

function weiterleitung(wohin) {
setTimeout(„location.href=’“+wohin+"’;",1000);
// alert(wohin);
}

Beste Grüße
Oliver

Hi,
Danke!
Die Lösung:

function weiterleitung(wohin) {
setTimeout(„location.href=’“+wohin+"’;",1000);
// alert(wohin);
}

Beste Grüße
Oliver

.

Hi,
Danke!
Die Lösung:

function weiterleitung(wohin) {
setTimeout(„location.href=’“+wohin+"’;",1000);
// alert(wohin);
}

Beste Grüße
Oliver

Hi,
Danke!
Die Lösung:

function weiterleitung(wohin) {
setTimeout(„location.href=’“+wohin+"’;",1000);
// alert(wohin);
}

Beste Grüße
Oliver