Comment faire retard dans l'appel d'une fonction javascript?
-
16-09-2019 - |
Question
Je veux exécuter un nombre particulier de déclarations après un certain délai. Par exemple:
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);
}
Ici, je veux régler la position de défilement actuelle à un prticular div. Mais il me donne l'erreur: x est undefined . Permettez-moi de dire u si j'utilise les fonctions ci-dessous, il fonctionne très bien, alors s'il vous plaît ne me dites pas que ele est nul et bla bla bla.
function gotoDiv(index) {
var ele = document.getElementById("Div" + index);
var x = findPosX(ele);
var y = findPosY(ele);
window.scrollTo(x, y);
}
Toute aide appréciée.
La solution
essayer
setTimeout("window.scrollTo(" + x + ", " + y + ")", 5000);
ce n'est pas la meilleure pratique. Utilisez cette place:
setTimeout(function() { window.scrollTo(x, y); }, 5000);
Autres conseils
Vous pouvez donner setTimeout
une fonction, plutôt qu'une chaîne, ce qui vous permettra d'accéder à ces variables:
setTimeout(function() { window.scrollTo(x, y); }, 5000);
Enveloppez la fonction dans une fermeture, puis mettre le délai d'attente à l'intérieur de la fermeture.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow