рони,
спасибо. всё круто. разбираюсь в Вашем коде теперь)) а для моего варианта можно поправить? или всё безнадёжно? |
gazman,
алгоритм моего кода ничем не отличается от вашего,просто правильно указаны данные и добавлена сортировка в обе стороны за счёт reverse |
gazman,
изменены/добавлены строки 85,86, 94 <!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> </head> <body> <table class="sort" id="sort" align="center"> <tr id="zag"> <td>ID</td> <td>Имя</td> <td>Фамилия</td> <td>Сайт</td> <td>Переключалка стилей</td> </tr> <tr> <td>1</td> <td>Александр</td> <td>Шуркаев</td> <td><a href="#">htmlcoder.visions.ru</a></td> <td>Не-а</td> </tr> <tr> <td>123</td> <td>Пол</td> <td>Соуден</td> <td><a href="#">idontsmoke.co.uk</a></td> <td>Угу</td> </tr> <tr> <td>3</td> <td>Джеффри</td> <td>Зельдман</td> <td><a href="#">zeldman.com</a></td> <td>Угу</td> </tr> <tr> <td>44</td> <td>Аарон</td> <td>Будман</td> <td><a href="#">youngpup.net</a></td> <td>Не-а</td> </tr> <tr> <td>11</td> <td>Глен</td> <td>Мерфи</td> <td><a href="#">glenmurphy.com</a></td> <td>Не-а</td> </tr> <tr> <td>15</td> <td>Даниель</td> <td>Боган</td> <td><a href="#">waferbaby.com</a></td> <td>Не-а</td> </tr> <tr> <td>33</td> <td>Ден</td> <td>Бенджамин</td> <td><a href="#">hivelogic.com</a></td> <td>Угу</td> </tr> </table> <script> var table = document.getElementById("sort"); var zag = document.getElementById("sort").rows[0].cells; var stroke = document.getElementById("sort").rows; function perebor(zg) { for (i=0; i<zg.length; i++) { zg[i].onclick = function () { index = this.cellIndex; cellRezult = []; function comp(a, b) { b = +b[0] || b[0]; a = +a[0] || a[0]; if (a > b) return 1; if (a < b) return -1; } for (i=1; i<table.rows.length; i++) { cellRezult[i-1] = []; cellRezult[i-1][0] = table.rows[i].getElementsByTagName("td").item(index).textContent; cellRezult[i-1][1] = table.rows[i]; } cellRezult.sort(comp); for (i=0; i<cellRezult.length; i++) { table.appendChild(cellRezult[i][1]); } } } } perebor(zag); </script> </body> </html> |
спасибо большое
|
рони,
пожалуйста объясните, что означает запись в Вашем коде: a && e.reverse(); и a ^= 1 |
gazman,
a && e.reverse(); if(a == 1) e.reverse(); если второе нажатие изменить порядок сортировки a ^= 1 это генератор 0 1 0 1 0 1 ... чётное нечётное нажатие |
спасибо
дорабатываю сортировку. хочу, чтобы в прямом и обратном направлении сортировало. Ваш код великолепно работает, но мне хочется научиться самому. я делаю проверку на наличие переменной, чтобы выбрать порядок сортировки. Но присутствует такой глюк. если я кликаю на один столбец, то сортирует в прямом порядке. а если сразу кликнуть на другой столбец, то сортируется предыдущий столбец в обратном порядке. нужно прогнать сортировку одного столбца туда и обратно, чтобы можно было сортировать другой. var table = document.getElementById("sort"); var zag = document.getElementById("sort").rows[0].cells; var stroke = document.getElementById("sort").rows; function perebor(zg) { var up = 0; for (i=0; i<zg.length; i++) { zg[i].onclick = function () { index = this.cellIndex; cellRezult = []; function comp(a, b) { b = +b[0] || b[0]; a = +a[0] || a[0]; if (a > b) return 1; if (a < b) return -1; } for (i=1; i<table.rows.length; i++) { cellRezult[i-1] = []; cellRezult[i-1][0] = table.rows[i].getElementsByTagName("td").item(index).textContent; cellRezult[i-1][1] = table.rows[i]; } if (up == 0) { cellRezult.sort(comp); up = 1; } else { cellRezult.reverse(comp); up = 0; } for (i=0; i<cellRezult.length; i++) { table.appendChild(cellRezult[i][1]); } } } } perebor(zag); |
gazman,
внимание на строки 80 и 99 <!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> </head> <body> <table class="sort" id="sort" align="center"> <tr id="zag"> <td>ID</td> <td>Имя</td> <td>Фамилия</td> <td>Сайт</td> <td>Переключалка стилей</td> </tr> <tr> <td>1</td> <td>Александр</td> <td>Шуркаев</td> <td><a href="#">htmlcoder.visions.ru</a></td> <td>Не-а</td> </tr> <tr> <td>123</td> <td>Пол</td> <td>Соуден</td> <td><a href="#">idontsmoke.co.uk</a></td> <td>Угу</td> </tr> <tr> <td>3</td> <td>Джеффри</td> <td>Зельдман</td> <td><a href="#">zeldman.com</a></td> <td>Угу</td> </tr> <tr> <td>44</td> <td>Аарон</td> <td>Будман</td> <td><a href="#">youngpup.net</a></td> <td>Не-а</td> </tr> <tr> <td>11</td> <td>Глен</td> <td>Мерфи</td> <td><a href="#">glenmurphy.com</a></td> <td>Не-а</td> </tr> <tr> <td>15</td> <td>Даниель</td> <td>Боган</td> <td><a href="#">waferbaby.com</a></td> <td>Не-а</td> </tr> <tr> <td>33</td> <td>Ден</td> <td>Бенджамин</td> <td><a href="#">hivelogic.com</a></td> <td>Угу</td> </tr> </table> <script> var table = document.getElementById("sort"); var zag = document.getElementById("sort").rows[0].cells; var stroke = document.getElementById("sort").rows; function perebor(zg) { for (i=0; i<zg.length; i++) { var up = 0; zg[i].onclick = function () { index = this.cellIndex; cellRezult = []; function comp(a, b) { b = +b[0] || b[0]; a = +a[0] || a[0]; if (a > b) return 1; if (a < b) return -1; } for (i=1; i<table.rows.length; i++) { cellRezult[i-1] = []; cellRezult[i-1][0] = table.rows[i].getElementsByTagName("td").item(index).textContent; cellRezult[i-1][1] = table.rows[i]; } cellRezult.sort(comp); if (up == 0) { up = 1; } else { cellRezult.reverse(comp); up = 0; } for (i=0; i<cellRezult.length; i++) { table.appendChild(cellRezult[i][1]); } } } } perebor(zag); </script> </body> </html> |
сердечно благодарю
|
Часовой пояс GMT +3, время: 03:56. |