在代码运行时停止事件监听器?

时间:2015-08-31 16:43:30

标签: javascript events

function errBlink()
{
    var check=true;
    var borColor=this.style.borderColor;
    var bxShad=this.style.boxShadow;

    var blink=setInterval(blinker(this),300);

    setTimeout(resetBox(this),2000);

    function resetBox(ele)
    {
        clearInterval(blink);
        ele.style.borderColor=borColor;    
        ele.style.boxShadow=bxShad;
    }

    function blinker(ele)
    {
        if(check)
        {
            ele.style.borderColor='red';
            ele.style.boxShadow='0px 0px 5px 0px rgba(255,0,13,1)';
            check=false'
        }else
        {
            ele.style.borderColor='white';
            ele.style.boxShadow='0px 0px 5px 0px rgba(00,00,00,1)';
            check=true;
        }
    }
}

我只想在此代码运行时停止侦听keydown事件,因为在setinterval期间如果按下任何键,这将重置此代码重新运行并且如果长时间保持按下则似乎是队列。

1 个答案:

答案 0 :(得分:1)

我建议您使用另一个标记(类似于您对check的操作),而不是禁用可能会干扰您网站上其他功能的keydown事件。

例如,您可以制作一个标记isBlinking,在函数启动时将其设置为true,在函数结束时将其设置为false,并仅运行代码if(!isBlinking)