Показать сообщение отдельно
  #4 (permalink)  
Старый 10.01.2018, 11:37
Профессор
Отправить личное сообщение для atanov Посмотреть профиль Найти все сообщения от atanov
 
Регистрация: 27.06.2016
Сообщений: 180

Попробую эту тему оживить.
Скорее всего руки кривые, вряд ли 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). А вот как проверить правильность сортировки каждого шага, мож чё и увижу?
Ответить с цитированием