[英]How to make delay in calling a function in javascript?
我想在延迟一段时间后执行特定数量的语句。 例如:
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);
}
在这里,我想将当前滚动位置设置为特定的div。 但这给了我错误: x是undefined 。 让我告诉你我是否使用下面的函数,它可以正常工作,所以请不要告诉我ele为空,等等等等。
function gotoDiv(index) {
var ele = document.getElementById("Div" + index);
var x = findPosX(ele);
var y = findPosY(ele);
window.scrollTo(x, y);
}
任何帮助表示赞赏。
您可以给setTimeout
一个函数,而不是一个字符串,这将允许您访问这些变量:
setTimeout(function() { window.scrollTo(x, y); }, 5000);
尝试
setTimeout("window.scrollTo(" + x + ", " + y + ")", 5000);
这不是最佳做法。 代替使用它:
setTimeout(function() { window.scrollTo(x, y); }, 5000);
将函数包装在闭包中,然后将超时放入闭包中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.