繁体   English   中英

如何在javascript中调用函数时出现延迟?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM