2016-08-03 1 views
0

Ich möchte das Src-Attribut eines iframe oder der window.opener.location in einer for-Schleife ändern. Zum Beispiel wie folgt aus:Wie ändere ich den Quellcode von iframes oder window.opener.location in einer for-Schleife?

  1. Start-Schleife
  2. ändern src von iframe
  3. 1 Sekunde warten
  4. Weiter
  5. ändern src von iframe link1 LINK2
  6. warten 1 secoond
  7. Weiter
  8. [...]
  9. Endschleife

Allerdings, wenn ich versuche, es in ein, wie dies für Schleife zu implementieren:

iframe = document.createElement('iframe'); 
document.body.appendChild(iframe); 
iframe.src = 'http://example.com/index.php?x=init'; 
for(i = 1; i <= 5; i++) 
{ 
    console.log(i) 
    iframe.src = 'http://example.com/index.php?x='+i; 
    sleep(1000) // <- A sleep function that does a while loop for 1000 ms 
} 

es immer druckt 1,2,3,4,5 in der Konsole, bevor er druckt tatsächlich die iframe und ändert dann seine src nur zur letzten.

Gibt es irgendetwas, was ich falsch mache? Ist es überhaupt möglich, das mit Javascript zu implementieren? Oder muss ich es anders machen? Ich habe das gleiche Problem mit for-Schleifen und window.opener.location.

+0

warum machen Sie es in einer Schleife? –

+0

Weil ich eine variable Anzahl von Iterationen habe. Es könnte 5 sein, es könnte manchmal 10 sein. –

Antwort

0

Wenn Sie denken, was Sie lieber wollen, ist so etwas.

iframe = document.createElement('iframe'); 
document.body.appendChild(iframe); 
iframe.src = 'http://example.com/index.php?x=init'; 
var i = 0; 

var interval = setInterval(function() { 
    i++; 
    console.log(i) 
    iframe.src = 'http://example.com/index.php?x='+i; 
    if (i === 5) { 
     clearInterval(interval); 
    } 
}, 1000); 
+0

Vielen Dank, es funktioniert so wie beabsichtigt. Gibt es eine Erklärung dafür, warum die for-Schleife nicht wie erwartet funktioniert hat? –

+0

Wenn du mir deine sleep() - Funktion zeigst, dann kann ich es dir erklären. – patrickcipot

+0

Es ist wahrscheinlich zu lang, um es hier zu schreiben, aber im Grunde ist es eine While-Schleife, die so schnell wie "aktuelle Zeit"> "Startzeit + 1000 ms" beendet wird. –

Verwandte Themen