范围问题,我认为函数语句始终悬挂在当前上下文的顶部。那么,为什么在下面未定义'hideNav()'?
var t;
function showNav(bflag){
clearTimeout(t);
if(bflag===true){
$("#tS2").stop(false,false).animate({
'bottom':'0'
}, 1000);
}else{
t=setTimeout("hideNav()",1000);
}
}
function hideNav(){
$("#tS2").stop(true,false).animate({
'bottom':'-125px'
}, 1000);
}
最佳答案
更改,
setTimeout("hideNav()",1000);
至
setTimeout(hideNav, 1000);
hideNav
仅在当前上下文中定义,但是您正在将字符串传递给setTimeout
。在全局对象的上下文中发生超时时,将评估该字符串。由于您的hideNav
函数未在全局对象中定义,因此它将引发异常。通过直接将对函数的引用传递给
setTimeout
,您不必担心。关于javascript - 具有setTimeout的Javascript范围问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10150350/