Попробую эту тему оживить.
Скорее всего руки кривые, вряд ли sort работает неправильно, но...
function sorttable (e){
var tbody = document.getElementsByTagName('tbody')[1];
var rowsArray = [].slice.call(tbody.rows);
var compare;
compare = function(rowA, rowB) {
return rowA.cells[2].textContent > rowB.cells[2].textContent;}
rowsArray.sort(compare);
alltable.removeChild(tbody);
for (var i = 0; i < rowsArray.length; i++) {
tbody.appendChild(rowsArray[i]);
}
alltable.appendChild(tbody);
}
этот код вроде должен сортировать строки по
строковому значению 3-й ячейки. Сортирует странно - скажем значения на латинскую букву 'A' идут правильно, потом бац идёт несколько строк на 'C', 'S' и т.д. тоже в виде блоков. Какой-то закономерности не обнаружил. Сижу чешу репу, подозрение падает на return:
rowA.cells[2].textContent > rowB.cells[2].textContent;
На дурака смотрел alert'ом: sort пары берёт, правда как попало (ну да, конечно ни как попало; знаю, что это фича sort в javascript). А вот как проверить правильность сортировки каждого шага, мож чё и увижу?