2017-07-31 27 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