Сортировка в таблице
Всем привет, хочу давно ужу учусь по вашему учебнику, и возникают вопросы, вот мне сейчас надо сделать сортировку на сайте, но по данному примере http://learn.javascript.ru/play/tuto...ort/index.html
Мне непонятен сам принцип сортировки, а именно этот код var compare; switch(type) { case 'number': compare = function(rowA, rowB) { return rowA.cells[colNum].innerHTML - rowB.cells[colNum].innerHTML; }; break; case 'string': compare = function(rowA, rowB) { return rowA.cells[colNum].innerHTML > rowB.cells[colNum].innerHTML ? 1 : -1; }; break; } Вот скажите, что в данной ф-ии function(rowA, rowB) является параметром? И как вычисляется сама сортировка? В данном случае это return rowA.cells[colNum].innerHTML - rowB.cells[colNum].innerHTML; Заранее спасибо, сорь если не в том разделе создал, в учебника у вас давно, а на форум почти не заходит. |
хелп ребятки
|
|
|
ммм это понятно
а что просиходит именно здесь? rowA.cells[colNum].innerHTML - rowB.cells[colNum].innerHTML; номер ячеек1 - номер ячеек2? |
function compare (a, b) { // a = 11; b = 10; return a - b;//11 - 10 = 1 значит "а" больше } |
Хммм... что-то не очень соображаю, что именно просходит с ячейками?
rowA.cells[colNum].innerHTML - rowB.cells[colNum].innerHTML; Понимаю это так ПараметрА.ячейки.[номер ячейки в строке (в данном случае - 0)].написать - (тоже самое) |
Цитата:
function sortFunction(a, b){ if(a меньше, чем b по некоторому критерию) return -1 // Или любое число, меньшее нуля if(a больше, чем b по некоторому критерию) return 1 // Или любое число, большее нуля // в случае а = b вернуть 0 return 0 } |
а - это все числа меньше нуля
б - больше нуля? |
var compare; switch(type) { // В свич передаётся тип переменной case 'number': // Если переменная число compare = function(rowA, rowB) { // Тогда мы переменной compare присваиваем анонимную функцию return rowA.cells[colNum].innerHTML - rowB.cells[colNum].innerHTML; // Которая возвращает разницу между ячейками rowA.cells[colNum] и rowB.cells[colNum] }; break; case 'string': // Если тип переменной строка compare = function(rowA, rowB) { // Тогда мы переменной compare присваиваем другую анонимную функцию return rowA.cells[colNum].innerHTML > rowB.cells[colNum].innerHTML ? 1 : -1; // Где если rowA.cells[colNum] больше rowB.cells[colNum] то функция возвращает 1, в противном случаи -1 }; break; } |
Часовой пояс GMT +3, время: 22:10. |