Man*_*ish 1 javascript settimeout
我希望在延迟一段时间后执行特定数量的语句.例如:
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);
}
Run Code Online (Sandbox Code Playgroud)
在这里,我想将当前滚动位置设置为特定div.但它给了我错误:x未定义.让我告诉你,如果我使用下面的函数它工作正常,所以请不要告诉我ele是空的,等等等等等等.
function gotoDiv(index) {
var ele = document.getElementById("Div" + index);
var x = findPosX(ele);
var y = findPosY(ele);
window.scrollTo(x, y);
}
Run Code Online (Sandbox Code Playgroud)
任何帮助赞赏.
bdu*_*kes 14
您可以提供setTimeout一个函数,而不是字符串,这将允许您访问这些变量:
setTimeout(function() { window.scrollTo(x, y); }, 5000);
Run Code Online (Sandbox Code Playgroud)