2015-08-31 114 views
0
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期間,如果按下任何按鍵,這將重新運行此代碼,重新運行一遍,似乎是排隊,如果長時間保持按下狀態。在代碼運行時停止事件偵聽器?

+0

什麼代碼在運行? – Manu

+0

爲什麼不只是有一個變量,並且在代碼運行時將其設置爲false,並且如果代碼爲false,則不要執行事件偵聽器。 – Manu

回答

1

與其禁用可能干擾您網站上其他功能的keydown事件,我會建議使用另一個標誌(類似於您使用check所做的操作)。

例如,你可以做一個標誌isBlinking,當你的函數開始,假當你的函數結束設置爲true,只有運行代碼if(!isBlinking)

+1

感謝人真的幫了很大忙 – hengecyche