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 :

Sélectionner une ligne dans un <tr>


Sujet :

JavaScript

  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 360
    Par défaut Sélectionner une ligne dans un <tr>
    bonjour,

    J'ai un tableau contenant en première colonne un checkbox. Ce code html+js me permet d'avoir un hover lors du passage de la souris

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <tr class = "tab_tr_normal" onMouseOut="this.style.backgroundColor=col_tmp;" onMouseOver="col_tmp=this.style.backgroundColor;this.style.backgroundColor='#ebebeb'">
    Je ne connais pas du tout ce formidable language Javascript mais je souhaiterai intérer une petite routine : lorsque je clique sur le checkbox, la ligne <tr> est mis en une couleur que j'aurai spécifié. Lorsque je décoche ce checkbox, je reviens à la couleur d'origine.

    Peut-être que vous avez une solution simple ? J'ai beaucoup de mal à trouver une réponse en tappant sur la tête de google, alors je me tourne vers ce formidable forum.

    Merci

  2. #2
    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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    as tu declaré ta variable col_temp en globale ?

    Mais bon pour plus de sureté et eviter que ton col_temp ne prenne la couleur d'une autre ligne sue le onmousover de l'autre ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <tr class = "tab_tr_normal" onMouseOut="this.style.backgroundColor=this.col_tmp;" onMouseOver="this.col_tmp=this.style.backgroundColor;this.style.backgroundColor='#ebebeb'">
    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 !

  3. #3
    Membre éclairé
    Inscrit en
    Septembre 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 360
    Par défaut
    Oui oui, cette partie fonctionne maintenant. Mais je souhaiterai ajouter un évènement de type onclick et on.. heu.. ondeclick ? Enfin, lorsqu'on clique sur la ligne, je change la couleur et lorsque clique une seconde fois, je remet la couleur d'origine (qui est stocké en tant que define chez moi)

  4. #4
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    tu créer une méthode vérifiant la couleur au moment du click
    si bleu alors rouge, si rouge alors bleu

  5. #5
    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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <tr class = "tab_tr_normal" onMouseOut="this.style.backgroundColor=this.col_tmp;" onMouseOver="this.col_tmp=this.style.backgroundColor;this.style.backgroundColor='#ebebeb'" onclick="this.style.backgroundColor=(this.style.backgroundColor!=this.define)?this.define:'red'" define="yellow">
    mais il ne conserve pas la couleur puisque le onmouseout le fait changer ...

    faut il conserver la couleur ?
    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 !

  6. #6
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    pour ce que j'en ai compris oui :
    Enfin, lorsqu'on clique sur la ligne, je change la couleur et lorsque clique une seconde fois, je remet la couleur d'origine (qui est stocké en tant que define chez moi)

  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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    il ne parle pas de quitter le tr .. juste de click ...

    mais bon suffit de mettre un flag
    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
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    lol on tourne en rond la

  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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <tr class = "tab_tr_normal" onMouseOut="if(clicked){this.style.backgroundColor=this.col_tmp;}" onMouseOver="if(clicked){this.col_tmp=this.style.backgroundColor;this.style.backgroundColor='#ebebeb'}" onclick="this.style.backgroundColor=(this.style.backgroundColor!=this.define)?this.define:'red';clicked=(clicked)?0:1;" define="yellow" clicked="0" >
    Quand il est clické, il ne change pas de couleur,
    Dès qu'on le reclick le mousover reprend ses droits ...
    après ça dépend du comportement que l'on veut ...
    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 éclairé
    Inscrit en
    Septembre 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 360
    Par défaut
    Hooo... Tous ces posts durant mon abscence !!!

    Hey, je suis désolé, malgré tous ces posts, il ne se passe rien lorsque je clique sur une cellule. J'ai voulu faire le warrior et me servir des informations cités plus haut pour trouver la faille, mais non, rien à faire.

    Voici le code généré après mon passage au php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <tr bgcolor="#eff5ff" clicked="0" define="yellow" 
    onclick="this.style.backgroundColor=(this.style.backgroundColor!=this.define)?this.define:'red';clicked=(clicked)?0:1;" 
    onmouseover="if(clicked){this.style.background='#ebebeb'}" 
    onmouseout="if(clicked){this.style.background='#EFF5FF'}">
    IL y'a qq chose qui ne va pas ? A la base, l'évenement onMouseOver et onMouseOut (sans le if(clicked) fonctionne. j'ai bien une cellule sur 2 en surbrillance et un hover lors du passage de la souris.

    Au cas ou, voici comment je fais pour afficher les lignes <tr>
    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
    	foreach($this->structureRowSet as $structureRow) 
    	{ 
    		$i++;
    		//if ($i%2 == 0) $style = "tab_tr_hover"; else $style = "tab_tr_normal";
    		if ($i%2 == 0) {
    			$style = "bgcolor=\"".TABLEAU_BACKGROUND_COLOR_NORMAL."\"";
    			$color = TABLEAU_BACKGROUND_COLOR_NORMAL;
    		}
    		 else {
    		 	$style = "bgcolor =\"".TABLEAU_BACKGROUND_COLOR_DOUBLE."\"";
    		 	$color = TABLEAU_BACKGROUND_COLOR_DOUBLE;
    		 }
    		 $hover = TABLEAU_BACKGROUND_COLOR_HOVER;
    //======================================================================
    //					LIGNE ET CELLULES DU TABLEAU
    //======================================================================?>
    	<tr <?php echo $style;?> class = "<?php //echo $style;?>" 
    		onMouseOut="javascript:this.style.background='<?php echo $color;?>'" 
    		onMouseOver="javascript:this.style.background='<?php echo $hover;?> '">
    Avec ce code, je n'ai plus de hover et le click ne fonctionne pas

  11. #11
    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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    sans doute une erreur de recopie ..
    testé chez moi ... ok
    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 !

  12. #12
    Membre éclairé
    Inscrit en
    Septembre 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 360
    Par défaut
    Ben non ! J'aurai aimé vous dire que ça y'est, mais il n'en est rien. J'ai recopié ton code via un magistral copier-coller et remplacer par le mien. Rien à faire. Je n'ai plus de hover au passage de la souris, et le clic de produit rien.

    Voilà comment j'ai réécris votre code (mon premier code js):
    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
     
    		<tr  <?php echo $style;?> 
    			define="yellow" 
    			clicked="0" 
    			onClick="this.style.backgroundColor=(this.style.backgroundColor!=this.define)?this.define:'red';clicked=(clicked)?0:1;" 
    			onMouseOut="if(clicked)
    			{
    				this.style.backgroundColor=this.col_tmp;
    			}
    			else {
    				this.style.background='<?php echo $color;?>'
    			}" 
    			onMouseOver="if(clicked)
    			{
    				this.col_tmp=this.style.backgroundColor;this.style.backgroundColor='#ebebeb'
    			}
    			else 
    			{
    				this.style.background='<?php echo $hover;?>'
    			}">
    Actuellement, le pb est que (je pense) la variable "clicked" n'est pas défini. Du moins c'est ce que me dis firebug lorsque je passe le curseur sur le tableau, plus exactement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    clicked is not defined
    onmouseout(mouseout clientX=0, clientY=0)
    Malgré mes essais, je n'ai pas réussi à trouver 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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    je testais sur une seule ligne avec une variable globlale clicked ...

    il suffit de confier le clicked au niveau de la ligne !!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.clicked=(this.clicked)?0:1;"
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    onMouseOut="if(this.clicked)
    // suivi de 
    onMouseOver="if(this.clicked)
    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 éclairé
    Inscrit en
    Septembre 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 360
    Par défaut
    Honte à moi et à ma famille !!!!! Ca fonctionne impec. Merci beaucoup, en plus j'ai pu comprendre grossomodo comment fonctionne le js.

    Bon, là je rajoute 2 questions mais je suis déjà très très reconnaissant de votre aide pour arriver jusqu'à ce résultat qui répond à l'objet de mon post.

    La première : comment puis-je conaitre les lignes cliquées pour traiter les informations dans une boucles PHP ? (oui, j'ai pas pensé quand j'ai mis ce post, que je devrais récupérer les informations par la suite).

    La seconde : Mon premier élément de tableau est un checkbox, lorsqu'on clique ou déclique, comment sélectionner le checkbox ? J'ai essayé d'acceder à mon élément par nom, mais je bataille trop en js. L'élement dans chaque ligne est réprésenté de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td class="tab_case"><input type="checkbox" /></td>
    J'ai ce même élément dans l'entête de mon tableau, qui est censé coché toutes les cases....

    J'abuse ???

    En tout cas, merci 1000 fois pour le code que vous m'avez montré. Merci beaucoup.

  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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var AllTrs=document.getElementsByTagName('tr');
    var CheckedLines=new Array();
    for(i=0;Alltrs[i];i++){if(AllTrs[i].checked=='1'){CheckedLines.push(AllTrs[i])}}

    et là CheckedLines est une collection des lignes cochées ...

    2) ben il n'a pas de name ton input ????
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="checkbox" name="??????"/>
    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 éclairé
    Inscrit en
    Septembre 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 360
    Par défaut
    Purée, j'en ai vraiment marre d'être un boulet sur ce post. J'ai pourtant bien compris le principe mais je n'arrive pas à l'appliquer. Voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <td class="tab_case"><input type="checkbox" 
    									onClick="javascript:var AllTrs=document.getElementsByTagName(\'tr\');
    											var CheckedLines = new Array();
    											for(i=0;AllTrs[i];i++){
    												if(AllTrs[i].checked==\'1\'){
    													CheckedLines.push(AllTrs[i]);
    												}}" /></td>';
    Au début, j'étais fier d'avoir pu débugger une erreur d'écriture sur AllTrs qui était écris 'Alltrs'.

    Mais rien à faire, ça ne marche pas. Lorsque je clique dans le checkbox, il y'a rien. Je n'ai pas d'erreurs javascript mais rien ni les autres <input type="checkbox" name ="id1"> de chaque ligne<tr> du tableau ne sont cochés et encore moins surlignés.

    J'ai essayé de mettre simplement : AllTrs[i].checked=1 dans le for, mais apparement ce n'est pas une idée digne de ce nom.

    Voilà je sollicite encore une fois votre aide.

Discussions similaires

  1. [C#]Sélectionner une ligne dans un datagridview
    Par padodanle51 dans le forum Windows Forms
    Réponses: 7
    Dernier message: 10/03/2013, 09h04
  2. [HTML] Sélectionner une ligne dans un tableau en html
    Par jehlg dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 16/06/2008, 11h55
  3. Comment sélectionner une ligne dans une TStringGrid ?
    Par Ben_Le_Cool dans le forum Composants VCL
    Réponses: 11
    Dernier message: 22/08/2005, 12h38
  4. [DB2] Sélectionner une ligne dans une SP
    Par Fatah93 dans le forum DB2
    Réponses: 4
    Dernier message: 25/05/2005, 14h52
  5. Sélectionner une ligne dans une DBGrid
    Par RBIK dans le forum Bases de données
    Réponses: 13
    Dernier message: 01/07/2004, 17h13

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