Ergebnis 1 bis 9 von 9
  1. #1
    sambikisaru ist offline Grünschnabel
    registriert
    20-02-2011
    Beiträge
    5

    Question Problem mit JavaScript "Tabelle sortieren" bei Textlinks

    Hallo,
    ich verwende dieses Script
    Rating bei jswelt.de - die javascript-sammlung in deutsch - alles kostenlos!
    zum Sortieren einer Tabelle. Funktioniert auch, was man von anderen nicht behaupten kann.

    Allerdings habe ich ein Problem mit Textlinks - das Script sortiert bei Text+Link nur den Text. Der Link wird offenbar an den dann in die Zelle hineinsortieren Text gehängt - wird also nicht mitsortiert.

    in "jswelt" hat "Paul" dazu angemerkt "Das Sortieren geht auch mit Links, wenn man beim Sort die Tabellenzeilen einfach mit

    table.rows[i].parentNode.insertBefore(table.rows[i+1], table.rows[i]);

    tauscht."

    Das ist sicher ganz einfach - leider kann ich nicht codieren und verstehe es darum nicht. Genauer: ich kann nicht erkennen, welche Zeilen diejenigen sind, die ersetzt werden sollen. Vielleicht kann mir da jemand auf die Sprünge helfen?

  2. #2
    sambikisaru ist offline Grünschnabel
    registriert
    20-02-2011
    Beiträge
    5

    AW: Problem mit JavaScript "Tabelle sortieren" bei Textlinks

    ...vielleicht hilft es, wenn ich das Script hier zeige?

    Durch Austausch der (Zitat) "Tabellenzeilen im Sort" durch diesen Ausdruck "table.rows.parentNode.insertBefore(table.rows[i+1], table.rows);"

    soll dieses Script in die Lage versetzt werden den Text inklusive seiner zugehörigen Links korrekt zu sortieren. Allerdings weiß ich nicht, welche die "Tabellenzeilen im Sort" sind, die ausgetauscht werden sollen.

    PHP-Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <
    HTML><HEAD>
    <
    META content="text/html; charset=windows-1252" http-equiv=Content-Type>
    <
    SCRIPT>
    //*****************************************************************************
    // COPYRIGHT (C) 2001 HAN J. YU, LIPING DAI 
    // Sortable table script- Han Yu [email]han@velocityhsi.com[/email]
    // THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY IT 
    // UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY THE FREE 
    // SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR (AT YOUR OPTION) 
    // ANY LATER VERSION. THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE 
    // USEFUL, BUT WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF 
    // MERCHANTABILITY OF FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU GENERAL 
    // PUBLIC LICENSE FOR MORE DETAILS. 
    // find by javarea.de
    //*****************************************************************************

    var domok=document.all||document.getElementById
    if (domok)
    {

    // Global variables
    var table;                                                        // Table object
    var rowArray = new Array();                        // Data row array
    var titleRowArray = new Array();            // Contains title texts
    var titleRowCellArray = new Array();    // Dynamically constructed title cells
    var titleSpanCellArray = new Array();    // Title elelments from row-spanned
    var colSpanArray = new Array();                // Rows col-spanned
    var colTitleFilled = new Array();            // Indicates whether title is filled
    var sortIndex;                                                // Selected index for sort
    var descending false;                                // Descending order
    var nRowactualNRowmaxNCol;                // Various table stats
    var origColor;                                                // Holds original default color
    var isIE;                                                            // True if IE
    var linkEventString =                                    // What's insider <a> tag
        
    'onMouseOver=\'setCursor(this);' +
        
    'setColor(this,"selected");\' ' +
        
    'onMouseOut=\'setColor(this,"default");\' ' +
        
    'onClick=\'sortTable(';

    // Configurable constants
    var ascChr "^";                                            // Symbol for ascending sort
    var desChr "v";                                            // Symbol for descending sort
    var selectedColor "white";                        // Color for sort focus
    var defaultColor "white";                        // Default color for sort off-focus
    var recDelimiter '|';                                // Char used as a record separator
    var titleFace 'b';                                    // Specifies the HTML tag for titles
    var updownColor 'gray';                            // Specified the color for up/downs 

    function initTable(obj)
    {
        
    // Check whether it's viewed by IE 5.0 or greater
        
    if (! checkBrowser()) return;

        
    // Local variables
        
    var countCol;
        var 
    nChildNodes;
        var 
    innerMostNode;
        var 
    nColSpannRowSpannedTitleColcolPos;
        var 
    cellcellText;
        var 
    titleFound false;
        var 
    rNRowSpanrNColSpan;

        
    // Initializing global table object variable
        
    if (obj.tagName == "TABLE")
        {
            
    // Assumes that the obj is THE OBJECT
            
    table obj;
        }
        else
        {
            
    // Assumes that the obj is the id of the object
            
    table document.getElementById(obj);
        }

        
    // Check whether it's an object
        
    if (table == null) return;

        
    // Check whether it's a table
        
    if (table.tagName != "TABLE") return;

        
    // Initializing the max col number with the size of last data row
        
    maxNCol table.rows[table.rows.length-1].cells.length;

        
    // Initializing arrays
        
    rowArray = new Array();
        
    colSpanArray = new Array();
        
    colTitleFilled = new Array();
        
    titleRowArray = new Array();
        
    titleRowCellArray = new Array();
        
        for (var 
    i=0i<maxNColi++)
            
    colTitleFilled[i] = false;

        
    // Setting the number of rows
        
    nRow table.rows.length;    

        
    // Should have at least 1 row
        
    if (nRow 1) return;

        
    // Initialization of local variables
        
    actualNRow 0;            // Number of actual data rows
        
    rNRowSpan 0;            // Remaining rows in the row span
        
    rNColSpan 0;            // Remaining cols in the col span
        
    nRowSpannedTitleCol 0;    // Number of title cols from row span
            
        // Loop through rows
        
    for (var i=0i<nRowi++)
        {
            
    nColSpan 1colPos 0;
            
    // Loop through columns
            // Initializing
            
    for (var j=0j<table.rows[i].cells.lengthj++)
            {
                
    // Do this iff title has not been found
                
    if (titleFound == false)
                {
                    if (
    table.rows[i].cells[j].rowSpan 1)
                    {
                        if (
    table.rows[i].cells[j].colSpan 2)
                        {
                            
    titleSpanCellArray[colPos] =
                                
    table.rows[i].cells[j];
                            
    colTitleFilled[colPos] = true;
                            
    nRowSpannedTitleCol++;
                        }
                        if (
    table.rows[i].cells[j].rowSpan 
                            
    rNRowSpan)
                        {
                            
    rNRowSpan 
                                
    table.
                                
    rows[i].cells[j].
                                
    rowSpan 1;

                            if (
    table.rows[i].
                                
    cells[j].colSpan 1)
                                
    rNColSpan 
                                    
    rNRowSpan 1;
                        }
                    }
                }
                if (
    table.rows[i].cells[j].colSpan &&
                    
    rNColSpan == 0)
                { 
                    
    nColSpan table.rows[i].cells[j].colSpan;
                    
    colPos += nColSpan;
                }
                else
                {
                    
    colPos++;
                }        
            }
                        
            
    // Setting up the title cells
            
    if (titleFound == false && nColSpan == && 
                
    rNRowSpan == && rNColSpan == && titleFound == false)
            {
                
    colSpanArray[i] = true;
                
    titleFound true;

                
    // Using indivisual cell as an array element
                
    countCol 0;
                for (var 
    j=0
                    
    j<table.rows[i].cells.length
                        
    nRowSpannedTitleColj++)
                {
                    if (
    colTitleFilled[j] != true)
                    {
                        
    titleRowCellArray[j] =
                            
    table.rows[i].cells[countCol];
                        
    countCol++;
                    }
                    else
                    {
                        
    titleRowCellArray[j] = 
                            
    titleSpanCellArray[j];
                    }
                }
            }
            
    // Setting up the data rows
            
    else if (titleFound == true && nColSpan == && rNRowSpan == 0)
            {
                for (var 
    j=0j<table.rows[i].cells.lengthj++)
                {
                    
    // Can't have row span in record rows ...
                    
    if (table.rows[i].cells[j].rowSpan 1) return;
                    
    nChildNodes =
                        
    table.rows[i].
                        
    cells[j].firstChild.childNodes.
                        
    length;

                    
    innerMostNode 
                        
    table.rows[i].
                        
    cells[j].firstChild;

                    while ( 
    nChildNodes != 0)
                    {
                        
    innerMostNode =
                            
    innerMostNode.
                            
    firstChild;
                        
    nChildNodes =
                            
    innerMostNode.
                            
    childNodes.
                            
    length;
                    }

                    if (
    == 0)
                    {
                        
    rowArray[actualNRow] = 
                            
    innerMostNode.data;
                    }
                    else
                    {
                        
    rowArray[actualNRow] += recDelimiter +
                            
    innerMostNode.data;
                    }
                }
                
    // Inconsistent col lengh for data rows
                
    if (table.rows[i].cells.length maxNCol)
                    return;
                
    actualNRow++;
                
    colSpanArray[i] = false;
            }
            else if (
    nColSpan == && rNRowSpan == && 
                
    rNColSpan == && titleFound == false)
            {
                
    colSpanArray[i] = false;
            }
            else
            {
                
    colSpanArray[i] = true;
            }
            
            
    // Counters for row/column spans
            
    if (rNRowSpan 0rNRowSpan--;
            if (
    rNColSpan 0rNColSpan--;
        }

        
    // If the row number is < 1, no need to do anything ...
        
    if (actualNRow 1) return;

        
    // Re-drawing the title row
        
    for (var j=0j<maxNColj++)
        {
            
    // If for some reason, the rows do NOT have any child, then
            // simply return ...
            
    if (titleRowCellArray[j].childNodes.length == 0) return;
            if (
    titleRowCellArray[j].firstChild != null)
            {
                
    nChildNodes 
                    
    titleRowCellArray[j].
                    
    firstChild.childNodes.length;
                
    innerMostNode 
                    
    titleRowCellArray[j].firstChild;

                while ( 
    nChildNodes != 0)
                {
                    
    innerMostNode =
                        
    innerMostNode.firstChild;
                    
    nChildNodes =
                        
    innerMostNode.
                        
    childNodes.
                        
    length;
                }
                
    cellText innerMostNode.data;
            }
            else
            {
                
    cellText "column(" ")";
            }
            
    titleRowArray[j] = cellText;
            
    titleRowCellArray[j].innerHTML =
                
    '<a ' +
                
    linkEventString +
                
    ',' '"' table.id '"' ');\'>' 
                
    '<' titleFace '>' cellText 
                
    '</' titleFace +'></a>';
        }
    }

    //*****************************************************************************
    // Function called when user clicks on a title to sort
    //*****************************************************************************
    function sortTable(index,obj)
    {
        
    // Re-inializing the table object
        
    initTable(obj);

        
    // Local variables
        
    var nChildNodes;
        var 
    innerMostNode;
        var 
    rowContent;
        var 
    rowCount;
        var 
    cellcellText;
        var 
    newTitle;
        
        
    // Can't sort past the max allowed column size
        
    if (index || index >= maxNCol) return;
        
        
    // Assignment of sort index
        
    sortIndex index;
        
    // Doing the sort using JavaScript generic function for an Array
        
    rowArray.sort(compare);

        
    // Re-drawing the title row
        
    for (var j=0j<maxNColj++)
        {
            
    cellText titleRowArray[j];
            
    cellText '<' titleFace +'>' +
                
    cellText '</' titleFace '></a>';
            
    newTitle '<a ' +
                
    linkEventString +
                
    ',' '"' table.id '"' ');\'>' +
                
    cellText +
                
    '</a>';
            if (
    == sortIndex)
            {
                
    newTitle += ' <font color=' updownColor '>';
                if (
    descending)
                    
    newTitle += desChr;
                else
                    
    newTitle += ascChr;
                
    newTitle += '</font>';
            }
            
    titleRowCellArray[j].innerHTML newTitle;
        }

        
    // Re-drawing the table
        
    rowCount 0;
        for (var 
    i=0i<nRowi++)
        {
            if (! 
    colSpanArray[i])
            {
                for (var 
    j=0j<maxNColj++)
                {
                    
    rowContent rowArray[rowCount].
                        
    split(recDelimiter);
                    
    nChildNodes =
                        
    table.rows[i].cells[j].firstChild.
                        
    childNodes.length;
                    
    innerMostNode 
                        
    table.rows[i].cells[j].firstChild;

                    while ( 
    nChildNodes != 0)
                    {
                        
    innerMostNode =
                            
    innerMostNode.firstChild;
                        
    nChildNodes =
                            
    innerMostNode.
                            
    childNodes.
                            
    length
                    }
                    
    innerMostNode.data rowContent[j];
                }
                
    rowCount++;
            }
        }

        
    // Switching btw descending/ascending sort
        
    if (descending)
            
    descending false;
        else
            
    descending true;
    }

    //*****************************************************************************
    // Function to be used for Array sorting
    //*****************************************************************************
    function compare(ab)
    {
        
    // Getting the element array for inputs (a,b)
        
    var aRowContent a.split(recDelimiter);
        var 
    bRowContent b.split(recDelimiter);
        
        
    // Needed in case the data conversion is necessary
        
    var aToBeComparedbToBeCompared;

        if (! 
    isNaN(aRowContent[sortIndex]))
            
    aToBeCompared parseInt(aRowContent[sortIndex], 10);
        else
            
    aToBeCompared aRowContent[sortIndex];

        if (! 
    isNaN(bRowContent[sortIndex]))
            
    bToBeCompared parseInt(bRowContent[sortIndex], 10);
        else
            
    bToBeCompared bRowContent[sortIndex];

        if (
    aToBeCompared bToBeCompared)
            if (!
    descending)
            {
                return -
    1;
            }
            else
            {
                return 
    1;
            }
        if (
    aToBeCompared bToBeCompared)
            if (!
    descending)
            {
                return 
    1;
            }
            else
            {
                return -
    1;
            }
        return 
    0;
    }

    //*****************************************************************************
    // Function to set the cursor
    //*****************************************************************************
    function setCursor(obj)
    {
        
    // Show hint text at the browser status bar
        
    window.status "Sort by " obj.firstChild.innerHTML;
        
    // Change the mouse cursor to hand or pointer
        
    if (isIE)
            
    obj.firstChild.style.cursor "hand";
        else
            
    obj.firstChild.style.cursor "pointer";
    }

    //*****************************************************************************
    // Function to set the title color
    //*****************************************************************************
    function setColor(obj,mode)
    {
        if (
    mode == "selected")
        {
            
    // Remember the original color
            
    if (obj.style.color != selectedColor
                
    defaultColor obj.style.color;
            
    obj.style.color selectedColor;
        }
        else
        {    
            
    // Restoring original color and re-setting the status bar
            
    obj.style.color defaultColor;
            
    window.status '';
        }
    }

    //*****************************************************************************
    // Function to check browser type/version
    //*****************************************************************************
    function checkBrowser()
    {
        if (
    navigator.appName == "Microsoft Internet Explorer"
            
    && navigator.appVersion.indexOf("5.") >= 0)
        {
            
    isIE true;
            return 
    true;
        }
        
    // For some reason, appVersion returns 5 for Netscape 6.2 ...
        
    else if (navigator.appName == "Netscape"
            
    && navigator.appVersion.indexOf("5.") >= 0)
        {
            
    isIE false;
            return 
    true;
        }
        else
            return 
    false;
    }

    }

    </SCRIPT> 
    Dieser Link zeigt, was ich damit vorhabe:
    http://www.historische-orte.de/html/gesamtliste.html
    Geändert von Albu (23-02-2011 um 22:17 Uhr) Grund: Codetags!!

  3. #3
    MagicFreakz ist offline Mitglied
    registriert
    14-07-2010
    Beiträge
    46

    AW: Problem mit JavaScript "Tabelle sortieren" bei Textlinks

    Probier mal dieses Script: http://www.kryogenix.org/code/browser/sorttable
    Ansonsten ist mit...im Document table.rows bzw. die vordefinierte function sort finden

  4. #4
    MagicFreakz ist offline Mitglied
    registriert
    14-07-2010
    Beiträge
    46

    AW: Problem mit JavaScript "Tabelle sortieren" bei Textlinks

    Und ?!
    Ein Experte ist ein Mann, der hinterher genau sagen kann, warum seine Prognose nicht gestimmt hat - Mehr über mich

  5. #5
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.672

    AW: Problem mit JavaScript "Tabelle sortieren" bei Textlinks

    Ist anscheinend nicht so wichtig...

  6. #6
    Avatar von miniA4kuser
    miniA4kuser ist offline Lounge-Member
    registriert
    12-07-2006
    Beiträge
    3.034

    AW: Problem mit JavaScript "Tabelle sortieren" bei Textlinks

    ...wie bei so vielen Anfragen hier...
    Hoffe ich konnte helfen

  7. #7
    sambikisaru ist offline Grünschnabel
    registriert
    20-02-2011
    Beiträge
    5

    AW: Problem mit JavaScript "Tabelle sortieren" bei Textlinks

    Sorry - ich musste halt mal was arbeiten und dann kann ich mich nicht meiner Hobbyseite widmen - ich werde mich frühestens in ein paar Tagen wieder damit befassen können...das kryogenix-Script hatte ich vor einigen Monaten schon mal - es funktionierte damals gar nicht. Ich werde es aber erneut versuchen...

  8. #8
    sambikisaru ist offline Grünschnabel
    registriert
    20-02-2011
    Beiträge
    5

    Thumbs up AW: Problem mit JavaScript "Tabelle sortieren" bei Textlinks

    ...so - inzwischen habe ich es mit dem neuen Skript getestet - es funktioniert grundsätzlich, die Links werden sortiert!
    ...in Kürze werde ich es dann in die Seite einsetzen...

    Vielen Dank für den Hinweis auf dieses Script, dass ich ansonsten bereits abgehakt hätte...

  9. #9
    sambikisaru ist offline Grünschnabel
    registriert
    20-02-2011
    Beiträge
    5

    AW: Problem mit JavaScript "Tabelle sortieren" bei Textlinks

    http://www.historische-orte.de/html/gesamtliste.html
    Wie man hier sehen kann - es funktioniert! Vielen Dank noch mal - das kryogenix-Script kann ich empfehlen!

Ähnliche Themen

  1. Habe konkretes Problem mit dem "Dia Show"-JavaScript
    Von RoboJava im Forum JavaScript
    Antworten: 2
    Letzter Beitrag: 12-09-2006, 02:21
  2. Prozentangaben bei <img src="" width="%"> in einer Tabelle
    Von lordevil im Forum CSS und (X)HTML
    Antworten: 6
    Letzter Beitrag: 29-08-2006, 22:49
  3. Antworten: 2
    Letzter Beitrag: 12-06-2006, 16:32
  4. javascript dropdown-problem in "nicht-ie"
    Von Fungus im Forum JavaScript
    Antworten: 12
    Letzter Beitrag: 23-02-2005, 22:37
  5. Antworten: 10
    Letzter Beitrag: 19-11-2004, 10:16

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •