[résolu]comment faire pour que les cell de 2 tables ont la même taille

comment faire pour que les cell de 2 tables ont la même taille [résolu] - HTML/CSS - Programmation

Marsh Posté le 13-01-2010 à 16:25:06    

Bonjour à tous .
volia, j'ai sur une page deux tableaux :
le premier est en fait le hearder de l'autre.
le second est construit dynamiquement a partir d'un query sql.
j'ai fait cela pour que quand on déroule le second tableau, le header reste visible.
le problème est que les deux tableaux n'ont pas la même taille de cellules.
comment pourrais-faire en javascript pour copier la largeur des cellules du second tableau vers le premier.
j'ai essayé avec les propriété tbodies et thead mais comme lors de la déclaration des tableaux, je ne spécifie pas le width, le champs est undefine.
 
toutes les réponses sont les bienvenues.
zoorg


Message édité par zoorg le 14-01-2010 à 16:55:22
Reply

Marsh Posté le 13-01-2010 à 16:25:06   

Reply

Marsh Posté le 13-01-2010 à 16:29:05    

tu peux montrer ton code et/ou un screenshot? j'ai l'impression d'après ce que tu dis que faire 2 tableaux n'est pas la meilleure solution...

Reply

Marsh Posté le 13-01-2010 à 16:49:49    

ben en fait, avant on avait une fonction pompée du net permettant avaec un seul tableau de "figer" le header a l'aide des balise thead et tbody.
seulement, cela ne fonctionnait que sur ie.
j'ai donc modifié la page , en utilisant des css, c'était mieux mais cela ne passait pas sur tout les navigateurs (safari et opera).
alors, j'ai pensé faire deux tableaux c'était  mieux.
il dois y avoir moyen de d'arranger cela, non ?
 

Reply

Marsh Posté le 13-01-2010 à 16:57:05    

pataluc a écrit :

tu peux montrer ton code et/ou un screenshot? j'ai l'impression d'après ce que tu dis que faire 2 tableaux n'est pas la meilleure solution...


Reply

Marsh Posté le 13-01-2010 à 17:03:25    

euh, comment on poste facilement une image ?
[img]D:\Mes documents\prtscreen.jpg[/img]

Reply

Marsh Posté le 13-01-2010 à 17:06:39    

Reply

Marsh Posté le 14-01-2010 à 08:53:22    

Reply

Marsh Posté le 14-01-2010 à 10:01:33    

ok. donc, quand tu dis figer le header, c'est au sens tu fais défiler le tableau, mais l'entête ne bouge pas? (comme "figer les volets" dans excel?)
 
parce que je te confirme qu'il vaut mieux avoir un seul tableau, c'est plus propre. après je ne sais pas comment faire défiler le reste... je regarde si je trouve qqchose.

Reply

Marsh Posté le 14-01-2010 à 10:06:44    

Reply

Marsh Posté le 14-01-2010 à 10:13:24    

merci mais j'avais déja essayé.
ça marche nikel sous internet explorer mais pour les autre browser cela ne fonctionne pas. c'est pour ça que j'ai mis deux tableaux.

Reply

Marsh Posté le 14-01-2010 à 10:13:24   

Reply

Marsh Posté le 14-01-2010 à 11:02:41    

ca fonctionne très bien sous firefox...

Reply

Marsh Posté le 14-01-2010 à 12:03:26    

le code HTML et CSS de ton tableau tu nous le file QUAND ??????
on va te montrer comment faire un truc propre :o


---------------
Blablaté par Harko
Reply

Marsh Posté le 14-01-2010 à 12:44:28    

gatsu35 a écrit :

le code HTML et CSS de ton tableau tu nous le file QUAND ??????
on va te montrer comment faire un truc propre :o


 
mon css etait celui-ci:

Code :
  1. /* define the table content to be scrollable                                              */
  2. /* set TBODY element to have block level attributes. All other non-IE browsers            */
  3. /* this enables overflow to work on TBODY element. All other non-IE, non-Mozilla browsers */
  4. /* induced side effect is that child TDs no longer accept width: auto                     */
  5. /* Filter out Opera 5.x/6.x and MacIE 5.x                                                 */
  6. head:first-child+body tbody[class].scrollContent {
  7. /*height:549px;*/
  8. overflow: auto;
  9. width: auto;
  10. }
  11. /* define height and width of scrollable area. Add 16px to width for scrollbar          */
  12. /* allow WinIE to scale 100% width of browser by not defining a width                   */
  13. /* WARNING: applying a background here may cause problems with scrolling in WinIE 5.x   */
  14. div.tableContainer {
  15. clear: both;
  16. /*height:549px;*/
  17. overflow: auto;
  18. width: auto;
  19. }
  20. /* WinIE 6.x needs to re-account for it's scrollbar. Give it some padding */
  21. \html div.tableContainer/* */ {
  22. padding: 0 16px 0 0;
  23. width: auto;
  24. }
  25. /* clean up for allowing display Opera 5.x/6.x and MacIE 5.x */
  26. html>body div.tableContainer {
  27. padding: 0;
  28. }
  29. /* WinIE 6.x needs to re-account for padding. Give it a negative margin */
  30. \html div.tableContainer table/* */ {
  31. margin: 0 -16px 0 0
  32. }
  33. /* define width of table. Opera 5.x/6.x and MacIE 5.x */
  34. html>body div.tableContainer table {
  35. float: none;
  36. margin: 0;
  37. width: auto;
  38. }
  39. /* set table header to a fixed position. WinIE 6.x only                                       */
  40. /* In WinIE 6.x, any element with a position property set to relative and is a child of       */
  41. /* an element that has an overflow property set, the relative value translates into fixed.    */
  42. /* Ex: parent element DIV with a class of tableContainer has an overflow property set to auto */
  43. thead.fixedHeader tr {
  44. position: relative;
  45. /* expression is for WinIE 5.x only. Remove to validate and for pure CSS solution      */
  46. top: expression(document.getElementById("tableContainer" ).scrollTop);
  47. }


 
 
le problème est que, pour que cela fonctionne, il faut ABSOLUMENT que la propriété heigth soit fixée.
mais bon, sur le site, cela ne peut être fixé sinon c'est moche
J'ai fait une focntion javascript qui met cette propriété a jours mais cela ne fonctionne pas bien en safari et opera :
 

Code :
  1. <script language="javascript">
  2. var mybrowser;
  3. var browserName = whichBrs();
  4. if (window.opera)
  5. {
  6. var frame = document.getElementById("tableContainer" );
  7.  var htmlheight = document.body.clientHeight;
  8.  htmlheight=htmlheight - 136;
  9.  frame.style.height = (htmlheight)  + "px";
  10.  frame.style.overflow="auto";
  11.  frame.style.width=document.body.clientWidth;
  12. }
  13. else
  14. {
  15. if (browserName=="Safari" )
  16. {
  17.  var frame = document.getElementById("tableContainer" );
  18.  var htmlheight = document.body.clientHeight;
  19.  htmlheight=htmlheight - 136;
  20.  frame.style.height = (htmlheight)  + "px";
  21.  frame.style.overflow="auto";
  22.  frame.style.width=document.body.clientWidth;
  23. }
  24. else
  25. {
  26.  if (document.all )
  27.  {
  28.  var frame = document.getElementById("tableContainer" );
  29.  var htmlheight = document.body.clientHeight;
  30.  htmlheight=htmlheight-136;
  31.  frame.style.height = (htmlheight)  + "px";
  32.  frame.style.overflow="auto";
  33.  }
  34.  else
  35.  {
  36.  var frame = document.getElementById("tableContainer" );
  37.  var htmlheight = document.body.clientHeight;
  38.  htmlheight=htmlheight - 136;
  39.  frame.style.height = (htmlheight)  + "px";
  40.  frame.style.overflow="auto";
  41.  }
  42. }
  43. }
  44. </script>


 
voici le site d'ou j'ai eu cette solution
http://www.imaputz.com/cssStuff/bigFourVersion.html
 
j'ai volontairement splitté sur les 4 browser pour pouvoir debugger.
mais rien n'y fait
alors j'avais pensé faire avec 2 tableaux.
 
et la, ça marche nikel, sauf que le header n'étant plsu lié au tableau, ne se redimentionne pas completement.
mais si vous aves des idée pour que cela fonctionne sur safari et opera, je suis preneur


Message édité par zoorg le 14-01-2010 à 12:46:52
Reply

Marsh Posté le 14-01-2010 à 13:16:46    

ET LE CODE HTMLLLLLLLLLLLLLLLLLLLLLL OU TU NE METS QU'un seul tableau :o


---------------
Blablaté par Harko
Reply

Marsh Posté le 14-01-2010 à 13:53:35    

gatsu35 a écrit :

ET LE CODE HTMLLLLLLLLLLLLLLLLLLLLLL OU TU NE METS QU'un seul tableau :o


voila

Code :
  1. <div id="tableContainer" class="tableContainer">
  2. <table id="tablst"  cellspacing="0" cellpadding="0" class="ScrollTable" width="100%">
  3. <thead id ="fixedHeader"  class="fixedHeader">
  4. <tr class="lsttit">
  5.     <cfif session.usrlng is "FR">
  6.         <th align="center">N°</th>
  7.         <th align="center" colspan="3">Description</th>
  8.  <th align="center">
  9.   <cfswitch expression=#session.usrroles#>
  10.   <cfcase value="ADHCLI">&nbsp;</cfcase>
  11.   <cfcase value="ADHVEN">&nbsp;Cf.&nbsp;</cfcase>
  12.   <cfdefaultcase>&nbsp;Prix achat&nbsp;</cfdefaultcase>
  13.   </cfswitch>
  14.  </th>
  15.        <th colspan="2" align="center">
  16.   <cfswitch expression=#session.usrroles#>
  17.   <cfcase value="ADHCLI">&nbsp;</cfcase>
  18.   <cfdefaultcase>&nbsp;Stock</cfdefaultcase>
  19.   </cfswitch>
  20.  </th>
  21.         <th rowspan="2" align="center">
  22.   <cfswitch expression=#session.usrroles#>
  23.   <cfcase value="ADHCLI">&nbsp;</cfcase>
  24.   <cfcase value="ADHVEN">&nbsp;</cfcase>
  25.   <cfdefaultcase>&nbsp;A cder</cfdefaultcase>
  26.   </cfswitch>
  27.  </th>
  28.         <th rowspan="2" align="center">&nbsp;</th>
  29.         <th rowspan="2" align="center">
  30.   <cfswitch expression=#session.usrroles#>
  31.   <cfcase value="ADHCLI">&nbsp;</cfcase>
  32.   <cfcase value="ADHVEN">&nbsp;</cfcase>
  33.   <cfdefaultcase>&nbsp;En cde</cfdefaultcase>
  34.   </cfswitch>
  35.  </th>
  36.         <th rowspan="2" align="center">
  37.   <cfswitch expression=#session.usrroles#>
  38.   <cfcase value="ADHCLI">&nbsp;</cfcase>
  39.   <cfcase value="ADHVEN">&nbsp;</cfcase>
  40.   <cfdefaultcase>&nbsp;Rem.</cfdefaultcase>
  41.   </cfswitch>
  42.  </th>
  43.  <th>&nbsp;</th>
  44.     <cfelse>
  45.         <th align="center">Prod.</th>
  46.         <th align="center" colspan="3">Beschrijving</th>
  47.  <th align="center">
  48.   <cfswitch expression=#session.usrroles#>
  49.   <cfcase value="ADHCLI">&nbsp;</cfcase>
  50.   <cfcase value="ADHVEN">&nbsp;Cf&nbsp;</cfcase>
  51.   <cfdefaultcase>&nbsp;Aankoop prijs&nbsp;</cfdefaultcase>
  52.   </cfswitch>
  53.  </th>
  54.        <th colspan="2" align="center">
  55.   <cfswitch expression=#session.usrroles#>
  56.   <cfcase value="ADHCLI">&nbsp;</cfcase>
  57.   <cfdefaultcase>&nbsp;Vooraad</cfdefaultcase>
  58.   </cfswitch>
  59.  </th>
  60.         <th rowspan="2" align="center">
  61.   <cfswitch expression=#session.usrroles#>
  62.   <cfcase value="ADHCLI">&nbsp;</cfcase>
  63.   <cfcase value="ADHVEN">&nbsp;</cfcase>
  64.   <cfdefaultcase>&nbsp;Te best.</cfdefaultcase>
  65.   </cfswitch>
  66.  </th>
  67.         <th rowspan="2" align="center">&nbsp;</th>
  68.  <th rowspan="2" align="center">
  69.   <cfswitch expression=#session.usrroles#>
  70.   <cfcase value="ADHCLI">&nbsp;</cfcase>
  71.   <cfcase value="ADHVEN">&nbsp;</cfcase>
  72.   <cfdefaultcase>&nbsp;In bestel.</cfdefaultcase>
  73.   </cfswitch>
  74.  </th>
  75.      <th rowspan="2" align="center">
  76.   <cfswitch expression=#session.usrroles#>
  77.   <cfcase value="ADHCLI">&nbsp;</cfcase>
  78.   <cfcase value="ADHVEN">&nbsp;</cfcase>
  79.   <cfdefaultcase>&nbsp;Opm.</cfdefaultcase>
  80.   </cfswitch>
  81.  </th>
  82.  <th>&nbsp;</th>
  83.     </cfif>
  84. </tr>
  85. <tr class="lsttit">
  86.     <cfif session.usrlng is "FR">
  87. <th align="center">Prod.</th>
  88.         <th align="left">&nbsp;&nbsp;Réf. fourn.</th>
  89. <th>&nbsp;</th>
  90. <th align="right">&nbsp;Marque</th>
  91.         <th align="center">&nbsp;Prix vente&nbsp;</th>
  92.         <th colspan="2" align="center">&nbsp;Emb.&nbsp;</th>
  93. <th>&nbsp;</th>
  94.     <cfelse>
  95. <th align="center">nr</th>
  96. <th align="left">&nbsp;&nbsp;Lever. Ref.</th>
  97. <th>&nbsp;</th>
  98. <th align="right">&nbsp;Merk</th>
  99. <th align="center">&nbsp;Verk.prijs&nbsp;</th>
  100.         <th colspan="2" align="center">&nbsp;Verp.&nbsp;</th>
  101. <th>&nbsp;</th>
  102.     </cfif>
  103. </tr>
  104. <tbody class="scrollContent" id = "scrollContent">
  105. <cfset w_cpt = 0>
  106. <cfoutput query="prod_proj_query">
  107.     <cfif w_cpt eq 0><cfset w_cpt = 1><cfelse><cfset w_cpt = 0></cfif>
  108.     <cfif w_cpt eq 0><tr class="lstodd"><cfelse><tr class="lsteven"></cfif>
  109.     <!-- Ligne détail 1 -->
  110.     <td rowspan="2" valign="center">
  111. <b><a href="javascript:open_popup('prod_proj_det_#Session.usrlng#.cfm?prdnum=#prdnum#&prjnum=#prjnum#',700,500)">#prdnum#</a></b>
  112.     </td>
  113.     <td colspan="3">
  114.         &nbsp;
  115.         <cfif session.usrlng is "FR">
  116.     #prddes#
  117.         <cfelse>
  118.     #prdoms#
  119.  </cfif>
  120. &nbsp;#prdspc#&nbsp;
  121.     </td>
  122.     <td class="rgt">
  123.  <cfswitch expression=#session.usrroles#>
  124.  <cfcase value="ADHCLI">&nbsp;</cfcase>
  125.  <cfcase value="ADHVEN">
  126.   <cfset w_prdcoepub = Round(((prdprxpub - rplprxpub) / (1+(mytvatau/100)) / prdprxmbr) * 100)>
  127.   <cfset w_prdcoepub_ent = chr(64+Left(#w_prdcoepub#,1))>
  128.   <cfset w_prdcoepub_dec = Right(#w_prdcoepub#,2)>
  129.   &nbsp;
  130.   #tvacod#/#w_prdcoepub_dec##w_prdcoepub_ent#
  131.   &nbsp;
  132.  </cfcase>
  133.  <cfdefaultcase>
  134.   &nbsp;
  135.    #LSNumberFormat(prdprxmbr,"999,999.99" )# €/#unpcodvte#
  136.   &nbsp;
  137.  </cfdefaultcase>
  138.  </cfswitch>
  139.     </td>
  140.     <cfif prjprdtgs NEQ "">
  141.  <cfset vprdtgs=prjprdtgs>
  142.  <cfset vprdsta=prjprdsta>
  143.     <cfelse>
  144.  <cfset vprdtgs=prdprdtgs>
  145.  <cfset vprdsta=prdprdsta>
  146.     </cfif>
  147.     <td class="rgt">
  148.         &nbsp;
  149.         <cfif prdstkdis greater than 0>
  150.             <font color="Green">
  151.         <cfelse>
  152.             <font color="Red">
  153.         </cfif>
  154.         #prdstkdis# #unscod#</font>
  155.         &nbsp;
  156.     </td>
  157.     <td class="rgt">
  158.         &nbsp;
  159.         <cfif #vprdsta# EQ "M">
  160.             <img src="../../../pictures/nok.gif" width="16" height="16" alt="Mort">
  161.         <cfelse>
  162.             <cfif #vprdtgs# EQ "N">
  163.                 <cfswitch expression=#vprdsta#>
  164.                     <cfcase value="D">
  165.                         <img src="../../../pictures/dir.gif" width="16" height="16" alt="Direct">
  166.                  </cfcase>
  167.        <cfcase value="T">
  168.                 <img src="../../../pictures/tra.gif" width="16" height="16" alt="Transit">
  169.      </cfcase>
  170.      <cfcase value="G">
  171.       <cfif session.usrlng is "FR">
  172.                 <img src="../../../pictures/grp.gif" width="16" height="16" alt="Groupage">
  173.                 <cfelse>
  174.                 <img src="../../../pictures/grp.gif" width="16" height="16" alt="Groepage">
  175.                 </cfif>
  176.      </cfcase>
  177.      <cfdefaultcase>
  178.          &nbsp;
  179.      </cfdefaultcase>
  180.         </cfswitch>
  181.     </cfif>
  182.         </cfif>
  183.         &nbsp;
  184.     </td>
  185. <cfif #vprdtgs# EQ "N" and #vprdsta# EQ "D">
  186.  <td rowspan="2" valign="center">DIRECT</td>
  187.  <td rowspan="2" valign="center">&nbsp;</td>
  188.  <td rowspan="2" class="cnt">&nbsp;</td>
  189.  <td rowspan="2" valign="center">&nbsp;</td>
  190. <cfelse>
  191.   <td rowspan="2" valign="center">
  192.    <cfswitch expression=#session.usrroles#>
  193.    <cfcase value="ADHVEN">&nbsp;</cfcase>
  194.    <cfdefaultcase>
  195.     <input name="Q#prdnum#" class="small" size="2" align="right"
  196.         onchange="javascript:basHref('#prdnum#','#prjnum#')">
  197.    </cfdefaultcase>
  198.    </cfswitch>
  199.   </td>
  200.   <td rowspan="2" valign="center">
  201.   <cfswitch expression=#session.usrroles#>
  202.   <cfcase value="ADHVEN">&nbsp;</cfcase>
  203.   <cfdefaultcase>
  204.    <a name="L#prdnum#" href="proj_bas.cfm?argMethod=xxx&argPrdnum=#prdnum#&argPrjnum=#prjnum#&argQte=0"" target="frm_bas" >
  205.    <cfif session.usrlng is "FR">
  206.    <img name="shop" src="../../../pictures/shp.gif" alt="Panier" width="16" height="16" border="0">
  207.    <cfelse>
  208.    <img name="shop" src="../../../pictures/shp.gif" alt="Winkelkaretje" width="16" height="16" border="0">
  209.    </cfif>
  210.    </a>
  211.   </cfdefaultcase>
  212.   </cfswitch>
  213.   </td>
  214.   <td rowspan="2" class="cnt">
  215.   <cfswitch expression=#session.usrroles#>
  216.   <cfcase value="ADHVEN">&nbsp;</cfcase>
  217.   <cfdefaultcase>
  218.   <font color="red">#sldqte#</font>
  219.   </cfdefaultcase>
  220.   </cfswitch>
  221.   </td>
  222.   <td rowspan="2" valign="center">
  223.   <cfswitch expression=#session.usrroles#>
  224.   <cfcase value="ADHVEN">&nbsp;</cfcase>
  225.   <cfdefaultcase>
  226.   &nbsp;&nbsp;
  227.   <a name="basmem" href="javascript:open_popup('../../ordr/basket/basket_rem.cfm?from=cata&basnum=0&prjnum=#prjnum#&prdnum=#prdnum#',500,400)">
  228.   <cfif session.usrlng is "FR">
  229.   <img name="remarque" src="../../../pictures/memo.gif" alt="Remarque" border="0">
  230.   <cfelse>
  231.   <img name="remarque" src="../../../pictures/memo.gif" alt="Opmerking" border="0">
  232.   </cfif>
  233.   </a>
  234.   </cfdefaultcase>
  235.   </cfswitch>
  236.   </td>
  237.     </cfif>
  238.     </tr>
  239.     <!--- Ligne détail 2 --->
  240.     <cfif w_cpt eq 0><tr class="lstodd"><cfelse><tr class="lsteven"></cfif>
  241.     <td class="sml">
  242.         &nbsp;
  243.         #pvdean#
  244.         &nbsp;
  245.     </td>
  246.     <td>&nbsp;</td>
  247.     <td class="rgtsml">
  248.         &nbsp;
  249.         #marlib#
  250.         &nbsp;
  251.     </td>
  252.     <td class="rgt">
  253.         &nbsp;
  254.         #LSNumberFormat(prdprxpub,"999,999.99" )# €/#unpcodvte#
  255.         &nbsp;
  256.     </td>
  257.     <cfset prdembtip="">
  258. <cfswitch expression=#session.usrroles#>
  259. <cfcase value="ADHVEN"></cfcase>
  260. <cfdefaultcase>
  261.     <cfif prdembvl1 NEQ 0>
  262. <cfset prdembtip="Par #prdembvl1# #unpcodvte# : #prdcoevl1#">
  263.     </cfif>
  264.     <cfif prdembvl2 NEQ 0>
  265.         <cfset prdembtip=prdembtip & "&##10;Par #prdembvl2# #unpcodvte# : #prdcoevl2#">
  266.     </cfif>
  267.     <cfif prdembvl3 NEQ 0>
  268.         <cfset prdembtip=prdembtip & "&##10;Par #prdembvl3# #unpcodvte# : #prdcoevl3#">
  269.     </cfif>
  270.     <cfif prdembvl4 NEQ 0>
  271.         <cfset prdembtip=prdembtip & "&##10;Par #prdembvl4# #unpcodvte# : #prdcoevl4#">
  272.     </cfif>
  273. </cfdefaultcase>
  274. </cfswitch>
  275.     <td class="rgt" title="#prdembtip#">
  276.         &nbsp;
  277.         #prdemb# #unscod#
  278.         &nbsp;
  279.     </td>
  280.     <td title="#prdembtip#">
  281.         <cfif prdembtip NEQ "">
  282.             &nbsp;*
  283.         <cfelse>
  284.             &nbsp;
  285. </cfif>
  286.     </td>
  287.     </tr>
  288. </cfoutput>
  289. </tbody>
  290. </table>
  291. </DIV>

Reply

Marsh Posté le 14-01-2010 à 16:50:05    

bon, j'ai trouvé comment faire que deux tableaux aient la même taille de cellule :
primo, il faut que les colonnes (th ou td) aient un id
premier tableau

Code :
  1. <th align="center" id="h1">N°</th>


second tableau :

Code :
  1. <td rowspan="2" valign="center" name="b1">


 
ensuite on fait appel a cette fonction :

Code :
  1. function fixandSetTableWidth()
  2. {
  3. var table,table2;
  4. var t1,t2;
  5. try
  6. {
  7. for (var i = 0; i<7; i++)
  8. {
  9.  t1="h"+(i+1);
  10.  t2="b"+(i+1);
  11.  table = document.getElementById(t1);
  12.  table2 = document.getElementsByName(t2);
  13.       table.width=(table2[0].offsetWidth - 2);   
  14. }
  15. }
  16. catch(err)
  17.   {
  18.  alert(err.message);
  19.      }
  20. }


 
i etant egal au nombre de colonne à traiter.
 
le -2 c'est parceque le offsetWidt contient aussi les bords.
selon la police cela peut varier
 
merci d'avoir passé du temps avec moi
 
@pluche

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed