私は<div>
という膨大な数の要素を1ページにいくつか試してみました。 "を生成" ボタンを
<style type="text/css">
.default {
color: red;
}
</style>
<script src="https://code.jquery.com/jquery-2.2.3.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function() {
$('#generate').click(function() {
for (var i = 0; i <= 5000; i++) {
$('#container').append('<div class="tick">some text</div>');
}
});
$('#add').click(function() {
var
divs,
countFrom,
length,
runner,
requestAnimation;
divs = document.getElementById("container").querySelectorAll('div');
countFrom = 0;
length = divs.length;
runner = function() {
if (countFrom < length) {
divs[countFrom++].className = 'default';
requestAnimationFrame(runner)
}
else {
cancelAnimationFrame(requestAnimation);
console.log('READY');
}
};
requestAnimation = requestAnimationFrame(runner);
});
});
</script>
<div>
<input type="button" id="generate" value="Generate"> <br>
<input type="button" id="add" value="Run it! Yay!"> <br>
</div>
<div id="container">
</div>
まずクリック(5000のdiv要素がコンテナに追加されます):
はここでそれは私の例です。次に「Run It」をクリックします。プロセスは非同期で開始されます。ページはプロセスによってブロックされません。
このプロセスを非同期で実行するには、slow setInterval()の代わりにWindow.requestAnimationFrame()メソッドを使用しました。
スクリプトの速度:1 addClassフレームごとの操作。私のコードを変更することで、この速度を簡単に上げることができます。例えば、100のaddClass forループを使用してフレームごと操作...
Demo
なぜないだけではなく、コンテナにクラスを追加しますか? – PeeHaa
すべてのdivに同じクラスを追加するのはなぜですか?なぜクラスをボディに追加してスタイルを持たないのですか?class div {..} –
私は自分の状況の現実から私の質問を単純化していました。異なるクラス名を持つ他のdivがあります。私は本質的に、以前のコードで既にクラスに適用されていないすべてのdivにデフォルトクラスを適用しています。 – John1984