Wie machen Verzögerung in eine Funktion in Javascript aufrufen?
-
16-09-2019 - |
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.
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.