我在頁面上有一個單詞計數器,用於統計每個輸入元素的字符數。淡入淡出元素onblur
當一個輸入元素被聚焦時,觸發fadeIn函數淡入計數器元素。當輸入元素失去焦點即模糊時,在計數器上觸發fadeOut功能。
但是,當您使用鼠標或鍵盤快速間隔地聚焦和模糊元素幾次時,漸變效果會越來越少。淡入淡出的計數器最終只在不透明度0和1之間閃爍。需要刷新頁面才能再次實現淡入淡出效果,直到再次鬆開爲止。
如果您選中所有元素並重新獲得瀏覽器地址欄的初始焦點,也會觸發此問題。
爲什麼會發生這種情況?它可能與淡入淡出功能和setInterval有關嗎?
這裏有一個例子淡入淡出功能,我從http://www.scriptiny.com使用:
var fadeEffect=function(){
return{
init:function(id, flag, target){
this.elem = document.getElementById(id);
clearInterval(this.elem.si);
this.target = target ? target : flag ? 100 : 0;
this.flag = flag || -1;
this.alpha = this.elem.style.opacity ? parseFloat(this.elem.style.opacity) * 100 : 0;
this.si = setInterval(function(){fadeEffect.tween()}, 20);
},
tween:function(){
if(this.alpha == this.target){
clearInterval(this.elem.si);
}else{
var value = Math.round(this.alpha + ((this.target - this.alpha) * .05)) + (1 * this.flag);
this.elem.style.opacity = value/100;
this.elem.style.filter = 'alpha(opacity=' + value + ')';
this.alpha = value
}
}
}
}();
你能爲此使用jQuery?它將高達10個字符串.. – Samich
當然,我可以看到問題是否在jQuery中重演。但我首先提出的原因是爲了更好地理解這種事情發生的原因。 – why
發佈jQuery示例,如果明白你的問題是正確的:) – Samich