问题描述
遇到一件很蛋疼的事,用js做了个效果,一直盯着是没问题的,但只要我不看这个页面去看其他页面(打开新的标签或查看其他标签),一阵子回来就会发现这个效果出错了……DEMO:JS部分代码functionInfoBox(containerId){this.oContainer=document.getElementById(containerId);this.oaInfoBox=this.oContainer.getElementsByTagName("li");this.autoTimer=this.changeHeightTimer=this.changeOpacityTimer=null;}InfoBox.prototype={init:function(){this.autoScroll();},listenToMouse:function(){},autoScroll:function(){varself=this;this.autoTimer=setInterval(function(){self.toggle();},3000);},toggle:function(){varendIndex=this.oaInfoBox.length-1;varlastLi=this.oaInfoBox[endIndex];this.oContainer.insertBefore(lastLi,this.oContainer.firstChild);vartargetHeight=this.oaInfoBox[0].offsetHeight;this.oaInfoBox[0].style.height=0+"px";this.oaInfoBox[0].style.opacity="0";this.oaInfoBox[0].style.filter="alpha(opacity=0)";this.changeHeight(targetHeight);},changeHeight:function(targetHeight){varself=this;varspeed=newHeight=0;clearInterval(self.changeHeightTimer);this.changeHeightTimer=setInterval(function(){speed=(targetHeight-newHeight)/8;newHeight+=speed;self.oaInfoBox[0].style.height=newHeight+"px";//testbeginvarspan=document.getElementById("test");span.innerHTML="speed:"+speed+"/targetHeight:"+targetHeight+"/height:"+newHeight;//testendif(speed<=0.1){self.oaInfoBox[0].style.height=targetHeight+"px";self.showDiv();clearInterval(self.changeHeightTimer);}},30);},showDiv:function(){varself=this;varargOpacity=0;clearInterval(this.changeOpacityTimer);this.changeOpacityTimer=setInterval(function(){argOpacity+=5;self.oaInfoBox[0].style.opacity=argOpacity/100;self.oaInfoBox[0].style.filter="alpha(opacity="+argOpacity+")";if(argOpacity>=100){clearInterval(self.changeOpacityTimer);}},30);}}
解决方案
本帖最后由 yqjun123 于 2011-10-29 15:38:02 编辑
解决方案二:
帮顶,lz这个问题遇到过.后来换其他方法.
解决方案三:
你所说的出错迹象是下半部分有空白?没有挨着轮?
解决方案四:
窗体不是当前窗体时.执行这个clearInterval让它停止.是当前窗体时,继续执行.试试..
解决方案五:
印象中还是第一次遇到这种问题。。难道是传说中的don'tblink?
解决方案六:
试了试只有webkit内核的浏览器会出现。IE无此现象,是跟渲染有关?
解决方案七:
引用5楼konghulu的回复:
试了试只有webkit内核的浏览器会出现。IE无此现象,是跟渲染有关?
对safari这样的webkit内核不会出现这样的情况.火狐就会出现..
解决方案八:
引用5楼konghulu的回复:
试了试只有webkit内核的浏览器会出现。IE无此现象,是跟渲染有关?
引用6楼jayrao5566的回复:
引用5楼konghulu的回复:试了试只有webkit内核的浏览器会出现。IE无此现象,是跟渲染有关?对safari这样的webkit内核不会出现这样的情况.火狐就会出现..
chrome和firefox都会喔……郁闷死了……
解决方案九:
引用1楼jayrao5566的回复:
帮顶,lz这个问题遇到过.后来换其他方法.
其他方法是指什么呢?求助~
解决方案十:
引用3楼jayrao5566的回复:
窗体不是当前窗体时.执行这个clearInterval让它停止.是当前窗体时,继续执行.试试..
哦……看到了……试试先……