JavaScript: ordinare gli elementi del DOM in modo casuale
Una semplice tecnica per ottenere un ordinamento casuale degli elementi del DOM con JavaScript.
Ieri ho pubblicato un articolo in cui mostravo come ridisporre gli elementi figli di un dato genitore in modo casuale. Oggi mostrerò come ottenere lo stesso risultato senza utilizzare jQuery.
La funzione principale è la seguente:
function randomize(elems) {
allElems = (function(){
var ret = [], l = elems.length;
while (l--) { ret[ret.length] = elems[l]; }
return ret;
})();
var shuffled = (function(){
var l = allElems.length, ret = [];
while (l--) {
var random = Math.floor(Math.random() * allElems.length),
randEl = allElems[random].cloneNode(true);
allElems.splice(random, 1);
ret[ret.length] = randEl;
}
return ret;
})(), l = elems.length;
while (l--) {
elems[l].parentNode.insertBefore(shuffled[l], elems[l].nextSibling);
elems[l].parentNode.removeChild(elems[l]);
}
}
Esempio d'uso:
var btn = document.getElementById('shuffle');
var elements = document.getElementById('test').getElementsByTagName('li');
btn.onclick = function() {
randomize(elements);
};
Potete visionare l'esempio finale in questa pagina.