Div inhalt mit JS dynamisch laden

heradon

Grünschnabel
Guten abend, ich habe ein problem mit einem kleinen JS snippet.

Javascript:
            var res = "!{sites}".split(",");
            console.log(res);
            var x = 1;

            $( document ).ready(function () {
                while (x < 10) {
                    function f() {
                    console.log("test");
                    for (var i=0, len = res.length; i < len; i++) {
                        document.getElementById("links").innerHTML='<object type="text/html" data=' + res[i] +' ></object>';
                        console.log(res[i]);
                    }
                    }
                    setTimeout (f, 3000);
                x++;
                }
            });

In !{sites} wird von NodeJS ein array üebrgeben (2 domains)

Jetzt habe ich folgendes problem ich will das das div alle 30 sek die neue seite läd, bisher bekomme ich immer es so hin das er zwar etwas ins div läd, was auch so fast richtig ist aber immer erst die 1. domain dann direkt die 2. domain das ja so nicht sein soll, das in einer wahnsinnigen geschwindigkeit und ich bekomme das 0 gedrosselt. Jetzt wäre es für mich erstmal wichtig zu erfahren was ich genau für einen mist gebaut habe und wie ich es besser machen kann :)
Ich muss dazu sagen das ich kein profi progger bin, ganz im gegenteil ich soll das für meinen chef machen da ich der einzige in der firma bin der auch nur einen hauch von PCs versteht.

Falls ihr mir hier helfen könntet wäre ich euch ewig dankbar!
 
Du verzögerst zwar den Aufruf der Funktion f aber dann wird die Schleife darin sofort durchlaufen und lädt die URLs unmittelbar hintereinander. Außerdem wird die Funktion f nach Ablauf der Verzögerung gleich zehn Mal direkt hintereinander aufgerufen. Was Du vorhast, musst Du etwas anders angehen:
Javascript:
$( document ).ready(function () {
    var idx = 0;
    function f() {
        document.getElementById("links").innerHTML='<object type="text/html" data='+ res[idx]+' ></object>';
        idx++;
        if (idx == res.length) clearInterval(timer);
    }
    setInterval(f, 30000);
});
 
Zurück