clearinterval不适用于以下代码

时间:2013-05-21 11:58:13

标签: jquery

代码有什么问题,我无法停止setInterval。

  

错误:changedHandler_BB未定义。

...

var changedHandler_BB = setInterval(function() {

    $("#wc_room_container_BB").addClass('active_chat_block_blink_effect');

    setTimeout(function() {
        $("#wc_room_container_BB").removeClass('active_chat_block_blink_effect');
    }, 500);

}, 1000);

...

$("#wc_block_BB").click(function(){

    var newID = $("#LatestLastID_BB").val();

    $("#worldchat_last_id_BB").val(newID);

    clearInterval(changedHandler_BB);
});

3 个答案:

答案 0 :(得分:0)

只需删除'var':

changedHandler_BB = setInterval(function() {...}); //setting variable on global scope {window.changedHandler_BB }

答案 1 :(得分:0)

根据上面的评论 - 您在函数中定义了changedHandler_BB。您需要在外部作用域中定义它,以便在其他函数中可以访问它

试试这个 -

var changedHandler_BB;

function someFunction() {
    changedHandler_BB = setInterval(function () {
        $("#wc_room_container_BB").addClass('active_chat_block_blink_effect');
        setTimeout(function () {
           $("#wc_room_container_BB").removeClass('active_chat_block_blink_effect');
        }, 500);
    }, 1000);
}
$("#wc_block_BB").click(function () {
    var newID = $("#LatestLastID_BB").val();
    $("#worldchat_last_id_BB").val(newID);
    clearInterval(changedHandler_BB);
});

答案 2 :(得分:0)

changedHandler_BB是另一个功能。因此,它位于该函数的范围内,而不是在单击事件处理程序中clearInterval可访问的范围内。这就是您尝试访问它时未定义的原因。

您需要确保changedHandler_BB与您的点击事件监听器位于同一范围内,或者可以通过它进行访问。