Is it possible to add an option: "sort list to original order" (first click sort in ascending order, the second click in descending order, then the third click would return to original order)?
If it's possible, you could show how?
this function:
List HTML:
<span style="font-size:140%"> <a id="Sort" href="#">Orden List</a></span><span id="set_order"> ▼</span><br /><br />
<b class="sidebar" id="PostList12">
<li>C</li>
<li>A</li>
<li>D</li>
<li>B</li></b>
Function:
window.onload = function () {
var desc = false;
document.getElementById("Sort").onclick = function () {
sortUnorderedList("PostList12", desc);
desc = !desc;
return false;
}
Function for fix sort function:
function compareText(a1, a2) {
var t1 = a1.textContent;
var t2 = a2.textContent;
return (t1 > t2) ? 1 : (t1 < t2) ? -1 : 0;
}
Get List for sort:
function sortUnorderedList(ul, sortDescending) {
if (typeof ul == "string") {
ul = document.getElementById(ul);
}
var lis = ul.getElementsByTagName("li");
var vals = [];
for (var i = 0, l = lis.length; i < l; i++) {
vals.push(lis[i]);
}
List alphabetical decrescent:
if (sortDescending) {
vals.reverse();
document.getElementById("set_order").innerHTML=" ▼";
}
List alphabetical crescent:
else {
vals.sort(compareText);
document.getElementById("set_order").innerHTML=" ▲";
}
for (var i = 0, l = vals.length; i < l; i++) {
ul.appendChild(vals[i]);
}
}
}