2016-04-02 14 views
0

Ich versuche, eine dynamische Funktion zu machen, die Umleitungen macht aber nicht Es mir zurückkehrt funktioniert ‚undefined‘Javascript undefined var window.location

hier ist der HTML-Code:

<p>You will be redirected to the page X in <span id="time">4</span> seconds..</p> 

hier ist der JavaScript-Code:

var seconds; 
var temp; 

function countdown(page) {  
    seconds = document.getElementById('time').innerHTML; 
    seconds = parseInt(seconds, 10); 
    if (seconds == 1) { 
     temp = document.getElementById('time'); 
     temp.innerHTML = '0. If you are not, please click <a href="' + page + '">here</a>.'; 
     window.location = page; 
     return; 
    } 
    seconds--; 
    temp = document.getElementById('time'); 
    temp.innerHTML = seconds; 
    timeoutMyOswego = setTimeout(countdown, 1000); 
} 
countdown('/asimplepage/asdfgh.html'); 

ich auch versucht zu tun:

function redirect(page){ 
    window.location = page; 
} 
redirect('thisworks.html'); 
+1

Typo: 'loaction' – Andy

+0

Bitte poste deinen HTML-Code. –

+0

@ScottMarcus Fertig, geschrieben, siehe die Frage –

Antwort

2

Das Problem ist, mit dieser Zeile:

timeoutMyOswego = setTimeout(countdown, 1000); 

Wenn setTimeoutcountdown ruft, ist es nicht die page Parameter ist vorbei, die ursprünglich die Funktion tritt weg. Also, die zweite (und nachfolgende Zeiten), die countdown läuft, wird nichts für page übergeben.

Ändern der Zeile:

timeoutMyOswego = setTimeout(function(){countdown(page)}, 1000); 

Dies weist den setTimeout() Funktion einen Aufruf an die anonyme Funktion zu planen, die wiederum countdown anrufen und mit dem countdownpage Variablenwert, nach einer Sekunde liefern.

+0

Vielen Dank! Wirklich hat mir geholfen –

+1

Ich denke, Ihre jsfiddle Verbindung ist falsch. Sie haben die Startseite verlinkt. – Oriol

+0

Ja, seltsam. JSFiddle lässt mich nicht speichern. Wie auch immer, ich habe das getestet und es korrigiert das Problem. –