Цитата:
|
atanov,
функция сортировки должна возвращать три состония 1, -1, 0 ваша compare возвращала только 1 и 0, в этом и была проблема. |
atanov,
function compareNumeric(a, b) { if (a > b) if(up) {return 1} else {return -1}; if (a < b) if(up) {return -1} else {return 1}; return 0;//лишняя строка, функции без явного указания возврают false, что Array.sort воспринимает как ноль } |
ОГРОМНОЕ СПАСИБО!!!!!!!!!!!!!!!!!!!
|
универсальная сортировка строк
atanov,
сортирует числа и строки, достаточно указать индекс ячейки и направление сортировки (в примере первая колонка, возрастание) <!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> </head> <body> <table width="400" id="alltable" > <thead> <tr> <th>Title 1</th> <th>Title 2</th> <th>Title 3</th> </tr> </thead> <tbody> <tr> <td>100</td> <td>B</td> <td>B</td> </tr> <tr> <td>300</td> <td>C</td> <td>C</td> </tr> <tr> <td>50</td> <td>A</td> <td>A</td> </tr> </tbody> </table> <script> function sorttable(table, index, up) { var tbody = table.querySelector("tbody"); var rowsArray = [].slice.call(tbody.rows); var compare = function compareNumeric(a, b) { a = a.cells[index].textContent.trim(); b = b.cells[index].textContent.trim(); if(a == +a) return up ? a - b : b - a; if (a > b) { return up ? 1 : -1; } if (a < b) { return up ? -1 : 1; } }; var temp = document.createDocumentFragment(); rowsArray.sort(compare).forEach(function(a) { temp.appendChild(a); }); tbody.appendChild(temp); } ; var table = document.querySelector("#alltable"); sorttable (table, 0,true) </script> </body> </html> |
рони, и опять же глобальное спасибо
Исчо тогда поспрашиваю. 1. В предпоследнем посте строка 45 "if (a > b) if(up)", два подряд ифа, это нормально? Я поначалу не обратил внимание на это. Если да, то как оно работает или где почитать об ентом? 2. В последнем посте .trim() - обязательно нужон? Да цифер понятно, но если строки, он вроде ничего не делает. 3. В последнем посте, стыдно спросить - в строке 45 '+a', что это? |
Цитата:
Цитата:
if (a > b) {if(up) {return 1} else {return -1}}; Цитата:
|
Цитата:
Блин, чтож в учебниках не пишуть, вот хорошо, что Вы разжевали :) |
Часовой пояс GMT +3, время: 13:32. |