tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
299
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Chysm Tutorials.de Gastzugang
    Hallo zusammen,

    wie der Titel sagt, habe ich ein kleines Problem beim Clonen eines Tabellenkopfes in einem XHTML-Dokument.

    Bei Tabellen die größer bzw. länger sind als eine volle Seite soll beim nach unten Scrollen der Tabellenkopf mit wandern.
    Das klappt soweit auch ganz gut, nur werden die Spaltenbreiten der Ausgangstabelle nicht übernommen und dadurch ist ein unschöner Versatz das Resultat.

    Die Spaltenbreite setzte ich nach dem Clonen wie folgt:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    for (var i_row = 0; i_row < Math.min(this.FixedRowCount, this.SourceTable.rows.length); i_row++) {
       
        ot_cell = this.SourceTable.rows[i_row].firstChild;
        ft_cell = this.FloatingTable.rows[i_row].firstChild;
          while (ot_cell != null) {
        // Check for element node
        if (ot_cell.nodeType == 1) {
                                  .........
                                   ft_cell.setAttribute("width", ot_cell.offsetWidth);
        }; // if
                
        ot_cell = ot_cell.nextSibling;
        ft_cell = ft_cell.nextSibling;
           }; // while
    }; // for

    Dabei ist mir aufgefallen, das die offsetwidth der Quellzelle immer 0 ist.

    Zuerst hatte ich die Methode beim onload="" im Body-Tag ausgeführt, danach auch auf einen Button gelegt, weil ich dachte das das Dokument zu dem Zeitpunkt noch nicht gerendert
    ist und deshalb die OffsetWidth stets 0 ist, aber auch dies brachte keine Änderung.


    Habt ihr evtl. einen Vorschlag bzw. einen Lösungsweg?
     

  2. #2
    Avatar von hela
    hela hela ist offline Mitglied Smaragd
    tutorials.de Premium-User
    Registriert seit
    Oct 2004
    Beiträge
    1.123
    Hallo,
    so würde es bei mir funktionieren:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    
    <html>
      <head><title>Tabellentest</title></head>
      <body>
     
        <table id="scrollTable">
          <thead>
            <tr>
              <th>Spalte_1</th>
              <th>Spalte_2</th>
              <th>Spalte_3</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>Lorem ipsum dolor sit amet</td>
              <td>consetetur sadipscing elitr</td>
              <td>sed diam nonumy eirmod tempor invidunt</td>
            </tr>
    <!-- usw. usf. -->
          </tbody>
        </table>
     
        <p>
          <a href="#" onclick="alert(getElementById('scrollTable').tHead.[COLOR=Blue]rows[0].cells[0].offsetWidth[/COLOR]);">
            Breite der 1. Spalte
          </a>
        </p>
     
      </body>
    </html>
    Einzelheiten zum Tabellenobjekt findet man hier (w3schools).
     

  3. #3
    Chef_De_Loup Chef_De_Loup ist offline Mitglied Bronze
    Registriert seit
    Jul 2007
    Beiträge
    48
    Womoeglich ist das Objekt this.SourceTable.rows[i_row].firstChild; so nicht gueltig.

    Versuch doch mal die Sache in einer for Schleife zu machen.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    for (var i=0; i<this.SourceTable.rows[i_row].cells.length; i++){
            ot_cell = this.SourceTable.rows[i_row].cells[i];
            ft_cell = this.FloatingTable.rows[i_row].cells[i];
            if (ot_cell.nodeType == 1) { // wieder unklar ob Node-Attribute darauf direkt anwendbar sind
                                  .........
                                   ft_cell.setAttribute("width", ot_cell.offsetWidth);
        }; // if
     
    }
     

  4. #4
    Avatar von hela
    hela hela ist offline Mitglied Smaragd
    tutorials.de Premium-User
    Registriert seit
    Oct 2004
    Beiträge
    1.123
    Zitat Zitat von Chef_De_Loup Beitrag anzeigen
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    for (var i=0; i<this.SourceTable.rows[i_row].cells.length; i++){
            [COLOR=Blue]ot_cell = this.SourceTable.rows[i_row].cells[i];[/COLOR]
            ft_cell = this.FloatingTable.rows[i_row].cells[i];
            if (ot_cell.nodeType == 1) { [COLOR=Blue]// wieder unklar ob Node-Attribute darauf direkt anwendbar sind[/COLOR]
                                  .........
                                   ft_cell.setAttribute("width", ot_cell.offsetWidth);
        }; // if
    }
    Hallo,
    wenn ot_cell so zusammengestellt wird, dann muss man keine Knotentypen mehr aussortieren!
     

Ähnliche Themen

  1. JPanel Clonen?
    Von Maddili im Forum Java
    Antworten: 4
    Letzter Beitrag: 12.01.11, 20:34
  2. Fieldset Clonen
    Von xloouch im Forum Javascript & Ajax
    Antworten: 0
    Letzter Beitrag: 02.09.10, 09:49
  3. Tabellenkopf?
    Von Maik20 im Forum Javascript & Ajax
    Antworten: 9
    Letzter Beitrag: 24.03.09, 17:01
  4. Tabellenkopf
    Von Crash123 im Forum CSS
    Antworten: 3
    Letzter Beitrag: 16.02.09, 12:14
  5. Linux Clonen
    Von therealcharlie im Forum Linux & Unix
    Antworten: 1
    Letzter Beitrag: 27.02.06, 06:41