Javascript setInterval无法正常工作

时间:2015-03-25 13:56:48

标签: javascript

我在我的网站上创建了一个.js文件,并且我正在运行一些功能来保存scrollTop ul的值。我有另一个用setInterval调用的函数,如果它跳回0,则恢复scrollTop值(因为我使用ajax方法;它每5秒更新一次并跳转到顶部)。

问题是chatScroll是.js文件中的全局变量,在调用ajax方法后会被重置。

这些是我的Javascript函数:

var chatScroll = 0, chattimer = false;
function UpdateChatScroll(chat) {
    if (chat.scrollTop != 0 && chat.scrollTop != chatScroll) {
        //window.alert(chat.scrollTop);
        chatScroll = chat.scrollTop;
        if (!chattimer) {
            chattimer = true;
            setInterval(function () { RestoreChatScroll(chat); }, 10000);
        }
    }
}
function RestoreChatScroll(chat) {
    //window.alert(chatScroll);
    if (chat.scrollTop == 0) {
        window.alert("Should update..");
        chat.scrollTop = chatScroll;
    }
}

我做错了吗?这可以解决吗?

1 个答案:

答案 0 :(得分:0)

有一个修复:

var chatScroll = 0, chattimer = false, chatVar, chattimervar;
function UpdateChatScroll() {
    clearInterval(chattimervar);
    chatVar = document.getElementById("msgs_list");
    if (chatVar.scrollTop != chatScroll) {
        chatScroll = chatVar.scrollTop;
        chattimervar = setInterval(RestoreChatScroll, 10);
    }
}
function RestoreChatScroll() {
    chatVar = document.getElementById("msgs_list");
    if (chatScroll != chatVar.scrollTop) {
        chatVar.scrollTop = chatScroll;
    }
}