次の例では、このスクリプトはクラス「green」をすべての「span」HTML要素にランダムに一定の割合で適用します。
var items = $('span').get();
var interval = setInterval(function() {
var random_number = Math.floor(Math.random() * items.length);
$(items[random_number]).addClass('green');
items.splice(random_number, 1);
if (items.length === 0) {
clearInterval(interval);
}
}, 10);
関数を2回呼び出すだけで、間隔ごとに2つの要素が変更されるように更新しました。
var items = $('span').get();
var interval = setInterval(function() {
function rand(random_number) {
var random_number = Math.floor(Math.random() * items.length);
$(items[random_number]).addClass('green');
items.splice(random_number, 1);
}
rand(1);
rand(2);
if (items.length === 0) {
clearInterval(interval);
}
}, 500);
私が知りたいのは、要素の数に関係なく、このスクリプトですべての要素を同時にランダムに緑色に変える方法はありますか?
たとえば、http://jsfiddle.net/DUbQB/3/は、20個の要素があり、ランダム関数が2回呼び出されるため、10間隔で完了します。
しかし、40個の要素がある場合、スクリプトは20間隔、つまり2倍の長さになります。要素の数に関係なく、このスクリプトの完了に常に同じ時間がかかるのはなぜですか?