【发布时间】:2009-09-25 12:49:20
【问题描述】:
我想在延迟一段时间后执行特定数量的语句。 例如:
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 未定义。让我告诉你,如果我使用下面的函数它可以正常工作,所以请不要告诉我 ele 是 null 并且 blah blah blah。
function gotoDiv(index) {
var ele = document.getElementById("Div" + index);
var x = findPosX(ele);
var y = findPosY(ele);
window.scrollTo(x, y);
}
任何帮助表示赞赏。
【问题讨论】:
-
ele 为 null 可能不会导致 x 未定义,我认为 natrium 有该解决方案,但您应该检查 ele 是否为 null ;)我确定您刚刚简化了这里的代码而且您实际上已经在代码中这样做了;)
标签: javascript settimeout