Сортировка в таблице
Всем привет, хочу давно ужу учусь по вашему учебнику, и возникают вопросы, вот мне сейчас надо сделать сортировку на сайте, но по данному примере 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, время: 00:20. |