Questo sarà probabilmente il modo più veloce per farlo, dal momento che non fa uso di jQuery:
function sortList(ul){
var new_ul = ul.cloneNode(false);
// Add all lis to an array
var lis = [];
for(var i = ul.childNodes.length; i--;){
if(ul.childNodes[i].nodeName === 'LI')
lis.push(ul.childNodes[i]);
}
// Sort the lis in descending order
lis.sort(function(a, b){
return parseInt(b.childNodes[0].data , 10) -
parseInt(a.childNodes[0].data , 10);
});
// Add them into the ul in order
for(var i = 0; i < lis.length; i++)
new_ul.appendChild(lis[i]);
ul.parentNode.replaceChild(new_ul, ul);
}
Chiamare la funzione come:
sortList(document.getElementsByClassName('list')[0]);
È possibile ordinare altre liste allo stesso modo e se nella stessa pagina ci sono altri elementi con la classe list, dovresti dare il tuo ul id e passarlo usando quello.
Example JSFiddle
Modifica
Dal momento che lei ha detto che si desidera che accada su pageload, sto supponendo che si desidera che accada al più presto dopo l'ul è nel DOM che significa che si dovrebbe aggiungere la funzione sortList
alla testa della pagina e utilizzare immediatamente dopo la vostra lista come questa:
<head>
...
<script type="text/javascript">
function sortList(ul){
var new_ul = ul.cloneNode(false);
var lis = [];
for(var i = ul.childNodes.length; i--;){
if(ul.childNodes[i].nodeName === 'LI')
lis.push(ul.childNodes[i]);
}
lis.sort(function(a, b){
return parseInt(b.childNodes[0].data , 10) - parseInt(a.childNodes[0].data , 10);
});
for(var i = 0; i < lis.length; i++)
new_ul.appendChild(lis[i]);
ul.parentNode.replaceChild(new_ul, ul);
}
</script>
</head>
<body>
...
<ul class="list">
<li id="alpha">32</li>
<li id="beta">170</li>
<li id="delta">28</li>
</ul>
<script type="text/javascript">
!function(){
var uls = document.getElementsByTagName('ul');
sortList(uls[uls.length - 1]);
}();
</script>
...
</body>
Vedi qui http://stackoverflow.com/q/1134976/771300 –
@maerics Ho provato originariamente a crearlo da zero con un array 'function listSort (a, B) { return a - b; } var n = ["10", "775", "40", "1125", "1", "8"]; document.write (n.sort (listSort)); ' Ho ottenuto fino a riorganizzare la lista in ordine, ma non riuscivo a capire di lavorare con diversi ID di lista. – danssker