Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    dimensione fissa per th/td di tabella di dimensioni non fisse

    Ciao a tutti!
    Chiedo un parere su come ho risolto un problema che mi affliggeva da un po': impostare la dimensione dei th/td di una tabella, senza impostare una dimensione fissa per la tabella (alla quale aggiungo/rimuovo righe e colonne a run-time).

    Sono un po' confuso, mi spiego meglio: la tabella e' contenuta in un div, che e' scrollabile, e quindi ha width e height fisse.
    Se setto una width fissa per i th/td, questi si "ristringono" per non uscire dalle dimensioni del div (com'e' possibile?). Se invece agli stessi th/td imposto un'altezza fissa, la mantengono e il div scrolla senza nessun problema.

    Ho provato anche la soluzione float: impostare il display dei th/td a block, e dargli un "float: left". Quando lo spazio orizzontale del div finisce, le celle non si ristringono ma vanno a capo (tra l'altro non mi piacerebbe come soluzione, perche' che i bordi e il cellspacing della tabella sono annullati).

    Quindi ho pensato: quale' quella proprieta' che obbliga gli oggetti ad occupare tutto lo spazio orizzontale a loro dispozione? E mi sono risposto: noWrap. Settando noWrap=true per ogni th/td, tutto funziona alla perferzione con Chrome, l'ultimo Opera, l'ultimo IE e l'ultimo FF.

    Da inesperto vi chiedo: sapete spiegarmi il perche' di un comportamento che a me sembra davvero anomalo? La soluzione che ho trovato vi sembra corretta?

    Posto il codice che ho usato per le prove, e' una tabella dinamica: commentando le tre righe in cui setto il noWrap, si vede il malfunzionamento di cui parlo sopra.

    (index.html)
    <html>
    <head>
    </head>
    <body>
    <script type="text/javascript" src="prova.js"></script>
    </body>
    </html>


    (prova.js)
    //obj table definition
    var table=function(e){
    this.draw=function(){
    var _this=this;//pointer to table
    var TOT_ROWS=20;
    var TOT_COLS=30;
    //div container
    divTable=document.firstChild.childNodes[1].appendChild(document.createElement('div'));
    divTable.style.width='700px';
    divTable.style.height='400px';
    divTable.style.overflow='auto';
    divTable.style.position='relative';
    //end div container
    //table width head,tr cols titles, first col th and body
    var table=divTable.appendChild(document.createElement( 'table'));
    var tHead=table.appendChild(document.createElement('th ead'));
    ColsTitles=tHead.appendChild(document.createElemen t('tr'));
    emptyCross=ColsTitles.appendChild(document.createE lement('th'));//empty th for row-titles column
    emptyCross.style.width='100px';
    emptyCross.style.background='pink';
    var tBody=table.appendChild(document.createElement('tb ody'));
    //end table
    // making cols titles
    var hTit;
    for(var i=0; i<TOT_COLS; i++){
    hTit=ColsTitles.appendChild(document.createElement ('th'));
    hTit.id='thCol_'+i.toString();
    hTit.innerHTML=i.toString();
    hTit.style.width='100px';
    hTit.noWrap=true;
    hTit.style.background='pink';
    }
    // making rows
    var tr, td;
    for(var i=0; i<TOT_ROWS; i++){
    tr=tBody.appendChild(document.createElement('tr')) ;
    hTit=tr.appendChild(document.createElement('th'));
    // rows titles
    hTit.id="thRow_"+i.toString();
    hTit.innerHTML=i.toString();
    hTit.style.display='block'
    hTit.style.width='100px';
    hTit.noWrap=true;
    hTit.style.background='green';
    // making empty tds
    for(var j=0; j<TOT_COLS; j++){
    td=document.createElement('td');
    td.id="td_"+j.toString();
    td.innerHTML='';
    td.style.width='100px';
    td.noWrap=true;
    td.style.background='red';
    tr.appendChild(td);
    }
    }
    //show table
    table.style.display='block';
    }
    }
    var table0=new table();//create table istance
    table0.draw();

  2. #2
    mm non mi piace uppare, ma sono davvero curioso di capire qualcosa di piu' a riguardo: una tabella a cui non si imposta una larghezza fissa, inserita in un div con larghezza fissa, non vuole andare oltre la larghezza del div...? Solo a me sembra cosi' strano?!

  3. #3
    Giuro che e' l'ultimo up! E' che non sono ancora riuscito a risolvere in un modo che si possa definire "pulito" e non riesco a farmene una ragione, quindi vi prego di scusarmi.
    Luca

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.