I'm using the following script in order to sort (alphabetically) columns in HTML tables. The script works like a charm except that I don't have full control of non-English characters. If I have a word beginning with “Ü” for example, this is not treated like a “U” (as it should be). There is an easy way to transliterate characters before performing the sorting (like ü->u, ä->a etc.)? Please note that I don't want to use jQuery.
<script type="text/javascript">
var glossary, asc1 = 1,
asc2 = 1,
asc3 = 1;
window.onload = function () {
glossary = document.getElementById("glossary");
}
function sort_table(tbody, col, asc){
var rows = tbody.rows, rlen = rows.length, arr = new Array(), i, j, cells, clen;
// fill the array with values from the table
for(i = 0; i < rlen; i++){
cells = rows[i].cells;
clen = cells.length;
arr[i] = new Array();
for(j = 0; j < clen; j++){
arr[i][j] = cells[j].innerHTML;
}
}
// sort the array by the specified column number (col) and order (asc)
arr.sort(function(a, b){
return (a[col] == b[col]) ? 0 : ((a[col] > b[col]) ? asc : -1*asc);
});
for(i = 0; i < rlen; i++){
arr[i] = "<td>"+arr[i].join("</td><td>")+"</td>";
}
tbody.innerHTML = "<tr>"+arr.join("</tr><tr>")+"</tr>";
}
</script>