Frage

Ich möchte eine bestimmte Anzahl von Aussagen nach einiger Verzögerung auszuführen. Für zB:

function findPosX(obj) {
    var curleft = 0;
    if (obj.offsetParent) {
        while (1) {
            curleft += obj.offsetLeft;
            if (!obj.offsetParent) {
                break;
            }
            obj = obj.offsetParent;
        }
    } else if (obj.x) {
        curleft += obj.x;
    }
    return curleft;
}

function findPosY(obj) {
    var curtop = 0;
    if (obj.offsetParent) {
        while (1) {
            curtop += obj.offsetTop;
            if (!obj.offsetParent) {
                break;
            }
            obj = obj.offsetParent;
        }
    } else if (obj.y) {
        curtop += obj.y;
    }
    return curtop;
}
function gotoDiv(index) {
    var ele = document.getElementById("Div" + index);
    var x = findPosX(ele);
    var y = findPosY(ele);
    setTimeout("window.scrollTo(x, y)", 5000);
}

Hier möchte ich die aktuelle Bildlaufposition in eine prticular div einzustellen. Aber es gibt mir Fehler: x ist nicht definiert, . Lassen Sie mich sagen, u, wenn ich die Funktionen verwenden, wie unten es gut funktioniert, so wenden Sie sich bitte mir nicht erzählen, dass ele null ist und bla bla bla.

function gotoDiv(index) {
    var ele = document.getElementById("Div" + index);
    var x = findPosX(ele);
    var y = findPosY(ele);
    window.scrollTo(x, y);
}

Jede Hilfe sehr geschätzt.

War es hilfreich?

Lösung

versuchen

setTimeout("window.scrollTo(" + x + ", " + y + ")", 5000);

Das ist nicht Best Practice. Verwenden Sie diese anstelle:

setTimeout(function() { window.scrollTo(x, y); }, 5000);

Andere Tipps

können Sie geben setTimeout eine Funktion, sondern als eine Zeichenfolge, die Sie diese Variablen zugreifen können:

setTimeout(function() { window.scrollTo(x, y); }, 5000);      

Wickeln Sie die Funktion in einem Verschluss und dann innerhalb des Verschlusses das Timeout setzen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top