2017-07-31 44 views
0

大家好我需要循环4个divs并切换课程。我需要一个完成切换类功能,然后移动到下一个切换类然后下一个等等。在第四次切换到课程之后,循环需要从第一个开始,然后再循环。这里是我的断码迄今:通过Divs切换课程每个循环

var i = 1; 
 
$(document).ready(function() { 
 
    if (i < 5) { 
 
    setInterval(function() { 
 
     $('#screen_' + i).toggleClass('over-to-charts-screen'); 
 
     setTimeout(function() { 
 
     $('#screen_' + i).toggleClass('over-to-charts-screen'); 
 
     }, 1000); 
 
    }, 5000) 
 
    i++; 
 
    cycle(); 
 
    } else { 
 
    i = 0; 
 
    } 
 
});
.over-to-charts-screen { 
 
    padding-top: 38%; 
 
    padding-bottom: 33%; 
 
    background-color: #ec1d0c; 
 
    background-color: rgba(255, 48, 0, .7); 
 
    transition: background-color .7s; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<a href="pop-charts.html"> 
 
    <div class="to-chart-button" id="music_1"> 
 
    <div class="to-charts-screen screen_1" id="screen_1"> 
 
     <h5>Pop<br />Charts</h5> 
 
    </div> 
 
    </div> 
 
</a> 
 
<a href="rock-charts.html"> 
 
    <div class="to-chart-button" id="music_2"> 
 
    <div class="to-charts-screen screen_2" id="screen_2"> 
 
     <h5>Rock<br />Charts</h5> 
 
    </div> 
 
    </div> 
 
</a> 
 
<a href="country-charts.html"> 
 
    <div class="to-chart-button" id="music_3"> 
 
    <div class="to-charts-screen screen_3" id="screen_3"> 
 
     <h5>Country<br />Charts</h5> 
 
    </div> 
 
    </div> 
 
</a> 
 
<a href="latin-charts"> 
 
    <div class="to-chart-button" id="music_4"> 
 
    <div class="to-charts-screen screen_4" id="screen_4"> 
 
     <h5>Latin<br />Charts</h5> 
 
    </div> 
 
    </div> 
 
</a>

+0

只是为了澄清 - 需要进行切换哪一类? –

+0

你的代码中调用了哪个'cycle()'函数? – lexith

+1

您的JavaScript代码包含错误。我想建议您检查[控制台](https://stackoverflow.com/documentation/javascript/2288/console#t=201707311435207232224&a=remarks-opening-the-console-0)是否存在错误,尝试修复他们和[编辑]你的问题。 –

回答

0

你去那里有一个工作小提琴:

我只是修改CSS一点使预览更易读。

编辑: 您的方式使用间隔来重置您的索引不需要这个工作。更好的方法是遍历所有div元素与类“.to-charts-screen”。

在每个间隔I通过1递增指数(var i),并检查索引具有值3(这是最后 DIV)。当这是真的,我们将它设置回0,“循环”可以从头再次开始。

使事情更简单,我们只是取消对每个替类,只是它与新的索引i)追加到div

$(function(){ 
 
\t var i = 0; 
 
    var elems = $('.to-charts-screen'); 
 
\t setInterval(function() { 
 
    \t \t $(elems).removeClass('over-to-charts-screen'); 
 
    \t \t $(elems[i]).toggleClass('over-to-charts-screen'); 
 
      i = (i == 3) ? 0 : i + 1;   
 
\t }, 1500) 
 
});
.over-to-charts-screen { 
 
    padding-top: 10px; 
 
    padding-bottom: 10px; 
 
    background-color: #ddd; 
 
    transition: background-color .7s; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<a href="pop-charts.html"> 
 
    <div class="to-chart-button" id="music_1"> 
 
    <div class="to-charts-screen screen_1 over-to-charts-screen" id="screen_1"> 
 
     <h5>Pop<br />Charts</h5> 
 
    </div> 
 
</div> 
 
</a> 
 
<a href="rock-charts.html"> 
 
    <div class="to-chart-button" id="music_2"> 
 
    <div class="to-charts-screen screen_2" id="screen_2"> 
 
     <h5>Rock<br />Charts</h5> 
 
    </div> 
 
    </div> 
 
</a> 
 
<a href="country-charts.html"> 
 
    <div class="to-chart-button" id="music_3"> 
 
    <div class="to-charts-screen screen_3" id="screen_3"> 
 
     <h5>Country<br />Charts</h5> 
 
    </div> 
 
    </div> 
 
</a> 
 
<a href="latin-charts"> 
 
    <div class="to-chart-button" id="music_4"> 
 
    <div class="to-charts-screen screen_4" id="screen_4"> 
 
     <h5>Latin<br />Charts</h5> 
 
    </div> 
 
    </div> 
 
</a>

+0

你还没有提到OP的代码出了什么问题,你改变了什么来修正它,等等 - 你的答案是一个不同寻常的游戏。考虑添加更多信息,以便您的答案对未来的读者有用。 – Santi

+0

是的!这看起来不错。非常感谢!你能描述这意味着什么吗?我=(i == 3)? 0:i + 1; – westernit