window.setTimeout问题

cooc123 发布于 2011/09/20 16:44
阅读 271
收藏 0
function admin_login(form){
    if(form.author.value==''){
        form.author.focus();
        $("msg").innerHTML = "\u8bf7输入用户名!";
        return false;
    }

    form.logins.disabled = true;
    form.logins.value = "\u6b63在登錄!请稍后...";
    
    // 我要的效果是5秒后才 return true; 现在的效果是直接 return true了
    window.setTimeout("return true;",5000);
    //return true;
}

加载中
0
韩启朋
韩启朋
window.setTimeout(function(){

    return true;

},5000);

0
scl33
scl33

不是这样用的, 因为setTimeout类似于开启一个线程, 执行你需要执行的代码, 因此, 当前代码不会等待, 会直接返回, 同时, 开启的线程也在同时运行.

如果你希望在5秒后才触发一个动作, 应该使用回调. 你返回true, 是否原调代码会判断, 如果返回true了, 就执行一个动作, 比如提交, 更新等等? 无论什么都可以改写为回调方式进行. 如楼上所写. 将你需要触发的动作写到回调里, 不需要返回值, 而以此值作判断是否触发动作. 如果存在域的问题, 可以再作一些变换.

setTimeout(function(){
  //调用你的动作, 比如提交, 刷新, 跳转...不需要返回.就是把你原调代码里得到true后要做的事情写到这里
}, 5000);

 

返回顶部
顶部