ajax回调中setTimeout无效

需求是回调函数中,显示2s操作结果然后隐藏,但是setTimeout没有起作用, 无论是加不加双引号,或者写一个function都无效

    ......
    let status = document.getElementById("status");
    xml.onreadystatechange = function () {
        if (xml.readyState === 4 && xml.status === 200){
            status.style.visibility = "visible";
            if (xml.responseText === "1"){
               status.innerText = "登陆成功!";
            }else{
                status.innerText = "登陆失败";
            }
            setTimeout("status.style.display = 'none'", 2000);
        }
    };
    ......
阅读 4.7k
5 个回答
    let status = document.getElementById("status");
    xml.onreadystatechange = function () {
        if (xml.readyState === 4 && xml.status === 200){
            status.style.visibility = "visible";
            if (xml.responseText === "1"){
               status.innerText = "登陆成功!";
            }else{
                status.innerText = "登陆失败";
            }
            setTimeout(function () {
                status.style.visibility = "hidden";
            }, 2000);
        }
    };

你代码中settimeout里边引号红色文字部分不能这么写,你定义外边一个function就可以了

setTimeout(() => {
console.log(1)
}, 1000);

因为你用的 css 属性 innerText 并不存在,建议改成 status.style.visibility 试试。

是不是异步的问题

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题