IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

table entête fixe corps scrollable


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 165
    Points : 68
    Points
    68
    Par défaut table entête fixe corps scrollable
    Bonsoir,
    j'ai un gros souci avec mon code, j'ai passé la journée dessus et je n'ai toujours pas trouvé ou ca coince. En fait le but est de faire une table avec une entete fixe et un tbody qui possede un scroll.
    Mon code fonctionne tres bien sous fireFox mais sous IE je ne vois pas les lignes du Tbody. Je ne comprend.
    J'ai adapté mon code pour pouvoir le placer sur le post mais a voir comme ca, je vous comprendrez et vous me disiez, que ca ne sert a rien. Mais dans le contexte OUI.
    ouvrez le code sous fireFox et vous verrey l'intitulé de la colonne et la ligne dessous
    ouvrez maintenant sous IE et vous ne verrez que l'intitulé de la colonne. pourquoi ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
     
    <html>
    <head>
    	<script type="text/javaScript" src="prototype/dist/prototype.js"></script>
    	<script type="text/javaScript">
    		function construireTable() {
    			var body = document.getElementsByTagName("body")[0];
    			var fragment = document.createDocumentFragment();
    			var premierContainer = document.createElement("div");
    			Element.addClassName(premierContainer,"compTable");
    			fragment.appendChild(premierContainer);
    			var tableEntete = document.createElement("table");
    			Element.addClassName(tableEntete,"entete")
    			premierContainer.appendChild(tableEntete);
    			var thead = document.createElement("thead");
    			tableEntete.appendChild(thead);
    			var tr = document.createElement("tr");
    			thead.appendChild(tr);
    			var th = document.createElement("th");
    			tr.appendChild(th);
    			var titre = document.createElement("label");
    			var texte = document.createTextNode("test");
    			titre.appendChild(texte);
    			th.appendChild(titre);
     
     
    			//ajout de la balise Tbody pour le corps de la table
    			var tbody = document.createElement("tbody");
    			tableEntete.appendChild(tbody);
    			var trBody = document.createElement("tr");
    			tbody.appendChild(trBody);
    			var tdBody = document.createElement("td");
    			tdBody.setAttribute("colSpan","1");
    			trBody.appendChild(tdBody);
    			var divBody = document.createElement("div");
     
    			tdBody.appendChild(divBody);
    			var tableBody = document.createElement("table");
    			var trt = document.createElement("tr");
    			var tdr = document.createElement("td");
    			var texter = document.createTextNode("tttttttttttt");
    			tdr.appendChild(texter);
    			trt.appendChild(tdr);
    			tableBody.appendChild(trt);
     
     
    			divBody.appendChild(tableBody);
    			body.appendChild(fragment);
    		}
     
    	</script>
    	<style>
    		.compTable table{
    		border: 2px solid #3399CC;
    		border-collapse: collapse;
    		}
    		.compTable  th{
    		border-bottom: 2px solid #3399CC;
    		}
    		.compTable  td{
    			border-right: 1px solid #3399CC;
    			border-left: 1px solid #3399CC;
    			border-top: 1px dotted #3399CC;
    			border-bottom: 1px dotted #3399CC;
    		}
    		.compTable .entete  {
    			margin:0 auto;
    			border-collapse:collapse;
    		}
    		.compTable .tableBody {
    			border-collapse:collapse;
    		}
    		.innerBody {
    			overflow:auto;
    		}
    	</style>
    </head>
    <body onload="construireTable();">
    	<div id="TableUtilisateur"></div>
     
     
    </body>
    </html>

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2007
    Messages : 247
    Points : 276
    Points
    276
    Par défaut
    slt,

    si tu expliquais plus exactement ce que tu veux faire... pck là à première vue je ne vois pas l'intérêt de construire ta table par javascript, surtout via le dom !

    si tu dois vraiment passer par javascript pour construire ta table, crée-la dans une variable avant de l'insérer par innerHTML ; ce qui donne qqch comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <script type="text/javascript">
    function creerTable(){
      var str;
      str = "<table><tr>";
      str = str + "<td>...</td>";
      str = str + "</tr></table>";
      document.getElementById("id_de_ton_div").innerHTML = str;
      }
    </script>
    Conception et hébergement de votre site Web : http://www.jvprod.fr !

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 165
    Points : 68
    Points
    68
    Par défaut
    je m'en doutais qu'on allais me repondre ce genre de chose. Je veux absolument l'inserer de cette maniere car le nombre de colonne sera dynamique ainsi que le titre de chaque colonne. Je repete que le morceau de code que j'ai placé est juste un enchainement pour reproduire le bug que j'ai avec IE.
    Pourquoi ne voit ton pas la deuxieme table crée dans le Tbody ?

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 662
    Points
    66 662
    Billets dans le blog
    1
    Par défaut
    j'ai collé un code pour ça dans l'ancienne FAQ ...
    une recherche s'impose ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 165
    Points : 68
    Points
    68
    Par défaut
    Desolé pour les erreurs de titre, je fais faire attention desormais.
    Merci beaucoup pour ton aide, je vais essayer de mettre en place ton exemple dans ma page.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 165
    Points : 68
    Points
    68
    Par défaut
    au secour
    Je vais me servir de la struture de l'exemple codeSource mais j'ai quand meme
    besoin de resoudre ce probleme.
    La fonction est vraiment tres simple. Construction d'une table avec une cellule.
    Sous fireFox, je vois mon titre de cellule mais pas sous IE. Et pourtant avec un inspecteur de dom, mes balise sont bien presente alors pourquoi on ne voir rien ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    <html>
    <head>
    	<script type="text/javaScript">
    		function test() {
    			var noeud = document.getElementsByTagName("body")[0];
    			var table = document.createElement("table");
    			var tr = document.createElement("tr");
    			var titre = document.createTextNode("titr");
    			var td = document.createElement("td");
    			td.appendChild(titre);
    			tr.appendChild(td);
    			table.appendChild(tr);
    			noeud.appendChild(table);
    		}
     
    	</script>
    </head>
    <body onload="test();">
     
    </body>
    </html>

  7. #7
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 662
    Points
    66 662
    Billets dans le blog
    1
    Par défaut
    il faut appender dasn le tbody ...

    tu peux le créer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    <html>
    <head>
    	<script type="text/javaScript">
    		function test() {
    			var noeud = document.getElementsByTagName("body")[0];
    			var table = document.createElement("table");
    			var tbody=document.createElement("tbody");
    			var tr = document.createElement("tr");
    			var td = document.createElement("td");
     
    			td.appendChild(document.createTextNode("titre"))
     
    			tr.appendChild(td);
    			tbody.appendChild(tr)
    			table.appendChild(tbody);
    			noeud.appendChild(table);
    		}
     
    	</script>
    </head>
    <body onload="test();">
     
    </body>
    </html>
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 165
    Points : 68
    Points
    68
    Par défaut
    ca fonctionne aussi sous IE !!!!
    mais pourquoi ? est ce que
    <table><tr><td>gg</td></tr></table> est interdit ?

  9. #9
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 662
    Points
    66 662
    Billets dans le blog
    1
    Par défaut
    un table a toujours avoir un tbody ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <html>
    <head>
    	<script type="text/javaScript">
    		function test() {
    		alert(document.getElementsByTagName('table')[0].getElementsByTagName('tbody').length)
    		}
    	</script>
    </head>
    <body onload="test();">
    <table>
    </table>	
    </body>
    </html>
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 165
    Points : 68
    Points
    68
    Par défaut
    Merci beaucoup pour votre aider et toutes ses infos

  11. #11
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    ce serait pas plus simple d'utiliser insertRow et insertCell ? (FAQ)

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 165
    Points : 68
    Points
    68
    Par défaut
    Citation Envoyé par SpaceFrog
    j'ai collé un code pour ça dans l'ancienne FAQ ...
    une recherche s'impose ...
    Dond j'ai compris ma table a partir d'exemple mais comment gérer le cas, où l'on souhaite definir une largeur pour chaque colonne car dans la table inférieur qui possede le srcoll, les bordures ne sont plus aligné.
    Avez vous une solution ?

  13. #13
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 662
    Points
    66 662
    Billets dans le blog
    1
    Par défaut
    il me semble que dans mon exemple je définis dynamiquement la largeur des colonnes non ?
    Suffit de metrte un array avec les largeurs définise ou calculées ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 165
    Points : 68
    Points
    68
    Par défaut
    au depart, je ne m'étais pas servi de la fonction qui permet de calculer la largeur des colonnes car ca imposé de pointer sur un ID unique donc si j'appelle plusieurs fois ma fonction, j'aurai deux tables avec des id identiques.
    J'ai adapté la fonction et mon code et ca merche impeccable !

    prochaine etape, Au clique sur une cellule, je souhaite colorier la ligne pour indiquer qu'elle est sélectionné.

    Merci, merci

  15. #15
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 662
    Points
    66 662
    Billets dans le blog
    1
    Par défaut
    avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onclick="this.parentNode.style.backgroundColor='red'"
    dans le td ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 165
    Points : 68
    Points
    68
    Par défaut
    j'ai vraiment honte de ma question mais je n'ai jamais eu le cas et je bloque :
    je suis perdu avec les "" et ''
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Element.setAttribute(td,"onclick="this.parentNode.style.backgroundColor='red'"");

  17. #17
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 662
    Points
    66 662
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    mestds=document.getElementsByTagName('table')[0].getELementsByTagName('td');
    for (i=0;i<mestd.length;i==){
    mestd[i].onclick=function(){this.parentNode.style.backgroundColor='red'};
    }
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 165
    Points : 68
    Points
    68
    Par défaut
    Impeccable, ca marche, j'arrive maintenant a sélectionner une ligne.

    autre chose : j'aimerai deplacer l'ascensseur automatiquement pour voir une ligne précise.
    est ce possible ?

  19. #19
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 662
    Points
    66 662
    Billets dans le blog
    1
    Par défaut
    scrollTop sur le div conteneur du corps ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 165
    Points : 68
    Points
    68
    Par défaut
    j'ai fait des recherche sur scrollTop mais ca fonctionne avec des pixels.
    Mais comment savoir que ma 15eme ligne que je dois faire apparaitre en a telle position.
    Car faut trouve la position d'une ligne qui n'est pas présente a l'ecran a cause de l'ascensseur. Il doit y avoir quelque chose qui m'echappe

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Datagrid - entête fixe
    Par tarrant17 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 30/07/2007, 15h21
  2. Réponses: 4
    Dernier message: 11/07/2007, 11h52
  3. [HTML]Tableau avec entête fixe
    Par LE NEINDRE dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 18/08/2005, 11h40
  4. [CSS] débutante : un entête fixe avec image dans le CSS
    Par khany dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 13/06/2005, 15h23
  5. [PL/SQL][down&upLOAD] table document fixée
    Par meufeu dans le forum Oracle
    Réponses: 18
    Dernier message: 30/09/2004, 09h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo