var index=0; $(document).ready(function () { start(); setInterval("getIndex()",1000) }); function start(){ var obj=$("#ad ul>li"); for(var i=0;i<obj.length;i++){ $(obj[i]).css("opacity","0"); } } function setIndexOpacity(){ var item=$("#ad ul>li"); if(index!=0){ $(item[--index]).css("opacity","0"); } $(item[index]).css("opacity","1"); } function getIndex(){ index=index>6?0:++index; setIndexOpacity(); }
对你代码的分析:
1)index初始为0
2)start方法执行,未对index值作更改
3)setInterval()调用致使getIndex方法被调用,经过处理index自增1,此时index为1
4)setIndexOpacity在getIndex中被调用,由于index不为0,所以index自减1,此时index为0(注意--index为自减,即index=index-1,++index同理)
5)继续setInterval()的循环
那么请问到底index的值变化了没?
你说的对着,我应该把那个
function setIndexOpacity(){ var item=$("#ad ul>li"); if(index!=0){ $(item[--index]).css("opacity","0"); } $(item[index]).css("opacity","1"); } 改成: function setIndexOpacity(){ var item=$("#ad ul>li"); var changeindex=0; if(index!=0){ changeindex=index-1; $(item[changeindex]).css("opacity","0"); } $(item[index]).css("opacity","1"); }
再加一个中间变量就好了,恩,虽然那天下午自己已经解决了这个问题,但还是非常感谢仗义相助之人!