ANTICHAT Forum
HOME FORUMS MEMBERS RECENT POSTS LOG IN  
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > PHP
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Javascript сортировка колонок талбицы. Помогите разобраться
  #1  
Старый 15.11.2009, 06:14
AARON
Участник форума
Регистрация: 29.04.2008
Сообщений: 106
С нами: 9492068

Репутация: 46
По умолчанию Javascript сортировка колонок талбицы. Помогите разобраться

Откопал способ сортировки колонок отседава
http://htmlcoder.visions.ru/JavaScript/?22

PHP код:
<script type="text/javascript">
<!--
/*
originally written by paul sowden <paul@idontsmoke.co.uk> | http://idontsmoke.co.uk
modified and localized by alexander shurkayev <alshur@ya.ru> | http://htmlcoder.visions.ru
*/

var img_dir = "/i/"; // папка с картинками
var sort_case_sensitive = false; // вид сортировки (регистрозависимый или нет)

// ф-ция, определяющая алгоритм сортировки
function _sort(a, b) {
    var 
a = a[0];
    var 
b = b[0];
    var 
_a = (a + '').replace(/,/, '.');
    var 
_b = (b + '').replace(/,/, '.');
    if (
parseFloat(_a) && parseFloat(_b)) return sort_numbers(parseFloat(_a), parseFloat(_b));
    else if (!
sort_case_sensitive) return sort_insensitive(a, b);
    else return 
sort_sensitive(a, b);
}

// ф-ция сортировки чисел
function sort_numbers(a, b) {
    return 
a - b;
}

// ф-ция регистронезависимой сортировки
function sort_insensitive(a, b) {
    var 
anew = a.toLowerCase();
    var 
bnew = b.toLowerCase();
    if (
anew < bnew) return -1;
    if (
anew > bnew) return 1;
    return 
0;
}

// ф-ция регистрозависимой сортировки
function sort_sensitive(a, b) {
    if (
a < b) return -1;
    if (
a > b) return 1;
    return 
0;
}

// вспомогательная ф-ция, выдирающая из дочерних узлов весь текст
function getConcatenedTextContent(node) {
    var 
_result = "";
    if (
node == null) {
        return 
_result;
    }
    var 
childrens = node.childNodes;
    var 
i = 0;
    while (
i < childrens.length) {
        var 
child = childrens.item(i);
        switch (
child.nodeType) {
            case 
1: // ELEMENT_NODE
            
case 5: // ENTITY_REFERENCE_NODE
                
_result += getConcatenedTextContent(child);
                break;
            case 
3: // TEXT_NODE
            
case 2: // ATTRIBUTE_NODE
            
case 4: // CDATA_SECTION_NODE
                
_result += child.nodeValue;
                break;
            case 
6: // ENTITY_NODE
            
case 7: // PROCESSING_INSTRUCTION_NODE
            
case 8: // COMMENT_NODE
            
case 9: // DOCUMENT_NODE
            
case 10: // DOCUMENT_TYPE_NODE
            
case 11: // DOCUMENT_FRAGMENT_NODE
            
case 12: // NOTATION_NODE
            // skip
            
break;
        }
        
i++;
    }
    return 
_result;
}

// суть скрипта
function sort(e) {
    var 
el = window.event ? window.event.srcElement : e.currentTarget;
    while (
el.tagName.toLowerCase() != "td") el = el.parentNode;
    var 
a = new Array();
    var 
name = el.lastChild.nodeValue;
    var 
dad = el.parentNode;
    var 
table = dad.parentNode.parentNode;
    var 
up = table.up;
    var 
node, arrow, curcol;
    for (var 
i = 0; (node = dad.getElementsByTagName("td").item(i)); i++) {
        if (
node.lastChild.nodeValue == name){
            
curcol = i;
            if (
node.className == "curcol"){
                
arrow = node.firstChild;
                
table.up = Number(!up);
            }else{
                
node.className = "curcol";
                
arrow = node.insertBefore(document.createElement("img"),node.firstChild);
                
table.up = 0;
            }
            
arrow.src = img_dir + table.up + ".gif";
            
arrow.alt = "";
        }else{
            if (
node.className == "curcol"){
                
node.className = "";
                if (
node.firstChild) node.removeChild(node.firstChild);
            }
        }
    }
    var 
tbody = table.getElementsByTagName("tbody").item(0);
    for (var 
i = 0; (node = tbody.getElementsByTagName("tr").item(i)); i++) {
        
a[i] = new Array();
        
a[i][0] = getConcatenedTextContent(node.getElementsByTagName("td").item(curcol));
        
a[i][1] = getConcatenedTextContent(node.getElementsByTagName("td").item(1));
        
a[i][2] = getConcatenedTextContent(node.getElementsByTagName("td").item(0));
        
a[i][3] = node;
    }
    
a.sort(_sort);
    if (
table.up) a.reverse();
    for (var 
i = 0; i < a.length; i++) {
        
tbody.appendChild(a[i][3]);
    }
}

// ф-ция инициализации всего процесса
function init(e) {
    if (!
document.getElementsByTagName) return;

    for (var 
j = 0; (thead = document.getElementsByTagName("thead").item(j)); j++) {
        var 
node;
        for (var 
i = 0; (node = thead.getElementsByTagName("td").item(i)); i++) {
            if (
node.addEventListener) node.addEventListener("click", sort, false);
            else if (
node.attachEvent) node.attachEvent("onclick", sort);
            
node.title = "Нажмите на заголовок, чтобы отсортировать колонку";
        }
        
thead.parentNode.up = 0;
        
        if (
typeof(initial_sort_id) != "undefined"){
            
td_for_event = thead.getElementsByTagName("td").item(initial_sort_id);
            if (
document.createEvent){
                var 
evt = document.createEvent("MouseEvents");
                
evt.initMouseEvent("click", false, false, window, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, td_for_event);
                
td_for_event.dispatchEvent(evt);
            } else if (
td_for_event.fireEvent) td_for_event.fireEvent("onclick");
            if (
typeof(initial_sort_up) != "undefined" && initial_sort_up){
                if (
td_for_event.dispatchEvent) td_for_event.dispatchEvent(evt);
                else if (
td_for_event.fireEvent) td_for_event.fireEvent("onclick");
            }
        }
    }
}

// запускаем ф-цию init() при возникновении события load
var root = window.addEventListener || window.attachEvent ? window : document.addEventListener ? document : null;
if (
root){
    if (
root.addEventListener) root.addEventListener("load", init, false);
    else if (
root.attachEvent) root.attachEvent("onload", init);
}
//-->
</script> 
Мне необходимо сортировать колонку с датами такого вида

За 10.09.2009
За 11.11.2009
За 15.10.2009
За 14.10.2009

но, как не сложно догадаться, скрипт сортирует по числу, плюя на месяц и на год, тобишь:

За 10.09.2009
За 11.11.2009
За 14.10.2009
За 15.10.2009


Помогите разобраться с сортировкой даты. mysql ORDER BY date DESC не предлагать. Это на крайний случай, если с джаваскриптом не разберусь
 
Ответить с цитированием
Ответ



Предыдущая тема Следующая тема
Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разобраться с TidHttp narik_ С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby 13 11.08.2009 15:03
Помогите разобраться.... DarkMist PHP 2 04.01.2009 03:15
Помогите разобраться с угоном Аськи seeattact Skype, IRC, ICQ, Jabber и другие IM 5 17.01.2006 03:14



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.