我有一個ul,裏面有一些li
。 我想隨機選擇一個li
並添加一個.active
類爲1秒,然後刪除.active
類和隨機選擇下一個li
。如何在純javascript中添加隨機元素的類
我想這樣做,而不使用setInterval或超時,所以我嘗試過使用requestAnimationFrame,雖然我認爲我的邏輯與JavaScript是不完全正確的隨機化。
目前我有它的工作,但它每次再次調用該函數時選擇相同的li
。
<ul>
<li class="light active"></li>
<li class="light"></li>
<li class="light"></li>
<li class="light"></li>
<li class="light"></li>
</ul>
的Javascript
(function() {
var lights = document.getElementsByClassName("light");
var random = Math.floor(Math.random() * (lights.length - 1)) + 0;
var randomLight = lights[random];
function repeatOften() {
randomLight.classList += randomLight.classList ? ' active' : ' light';
requestAnimationFrame(repeatOften);
}
requestAnimationFrame(repeatOften);
})();
這裏是筆:https://codepen.io/H0BB5/pen/PJjapX?editors=0010
提前感謝!
爲什麼你試圖避免'setInterval()'? –
你永遠不會開始運行'repeatOften()'函數。所以它不會重複設置'active'類,它只是將它應用於第一種情況。 – Adjit
@AlexeySoshin避免佈局抖動,延遲間隔不一致,如果用戶更改標籤,它會影響計時。從我讀的requestAnimationFrame是要走的路,我試圖讓自己熟悉:) – h0bb5