首页 新闻 会员 周边

我用setInterval时index变量为什么不变化,一直为0呢,折腾了一下下午

0
悬赏园豆:5 [已解决问题] 解决于 2013-03-09 21:26
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();
}
高明无思的主页 高明无思 | 初学一级 | 园豆:6
提问于:2013-03-07 18:00
< >
分享
最佳答案
1

对你代码的分析:

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的值变化了没?

收获园豆:5
yevon | 菜鸟二级 |园豆:306 | 2013-03-07 19:36

你说的对着,我应该把那个

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");
}

再加一个中间变量就好了,恩,虽然那天下午自己已经解决了这个问题,但还是非常感谢仗义相助之人!

高明无思 | 园豆:6 (初学一级) | 2013-03-09 21:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册