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 :

definir un compteur depuis la value d'un hidden


Sujet :

JavaScript

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 163
    Points : 93
    Points
    93
    Par défaut definir un compteur depuis la value d'un hidden
    salut à tous

    je suis en train de bosser sur un Js qui me permettrai de faire des insertion de champs de tout type dans un formulaire...

    mon soucis actuel porte sur la définition de mon counter suivant la valeur de hiddenCounter recuperer (cf 2premiere lign du script):
    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
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    /*on verifie si le champ hiddenCounter existe afin de definir counter*/
    var hiddenCounter = document.getElementById('hiddenCounter').value;
    var counter = (hiddenCounter > 0) ? hiddenCounter : 0;
     
    function moreFields()
    {
       counter++;
     
       /*on clone le noeud du passage à recréé*/
       var newFields = document.getElementById('readroot').cloneNode(true);
       /*on redefinit l'id de celui-ci*/
       var insert = 'insert_'
       newFields.id = insert + counter;
     
       /*on definit les noeuds enfant de ce dernier*/
       var newField = newFields.childNodes;
     
       for(var i=0;i<newField.length;i++)
       {
          /*on redefinit l'attibut for du noeud label à chaque label rencontrer*/
          if(newField[i].nodeName == 'LABEL')
          {
             var lastCibleLabel = newField[i].getAttribute("for");
             newCibleLabel = lastCibleLabel + counter;
             newField[i].setAttribute("for",newCibleLabel);
          }
          /*on initialise une variable tabindexMaxi pour enregistrement de la valeur maxi de tabindex pour le clone*/
          var tabindexMaxi = '';
     
          /*si on a un champs quelquonque de forulaire, on réassigne les attributs id pour concordance au label, et name pour recuperation POST*/
          if(newField[i].nodeName == 'INPUT' || newField[i].nodeName == 'SELECT' || newField[i].nodeName == 'TEXTAREA')
          {
             newField[i].setAttribute("id",newCibleLabel);
             newField[i].name = newField[i].name + counter;
             /*pour chaque champ de formulaire detecter, on ecrase la valeur de la variable tabindexMaxi afin de détecter la valeur maxi de tabindex pour réincrémenter */
             tabindexMaxi = newField[i].getAttribute("tabindex");
          }
       }
     
       /*on definit la valeur de depart du tabindex pour ce nouveau noeud cloner*/
       tabindexValue = tabindexMaxi * counter;
     
       /* on redefinit ensuite tout les tabindex du noeud cloner suivant counter et tabindexMaxi*/
       for(var i=0;i<newField.length;i++)
       {
          /*si on a des champs quelquonque de formulaire, on réassigne l'attribut tabindex*/
          if(newField[i].nodeName == 'INPUT' || newField[i].nodeName == 'SELECT' || newField[i].nodeName == 'TEXTAREA')
          {
             /*on incremente la valeur de tabulation*/
             tabindexValue++;
             /*si on est dans le cas exeptionnel des input de type="radio", c'est le même tabindex pour le paquet de radio*/
             if(newField[i].type == 'radio')
             {
                newField[i].setAttribute("tabindex",tabindexValue);
                /*on decremente tabindexValue apès redefinition*/
                tabindexValue--;
                /*on definit une variable de controle de detection de paquet de radio*/
                var detectionRadio = true;
             }
             else
             {
                /*si il y a eut precedment detection de radio, on redefinit la var de detection*/
                if(detectionRadio == true)
                {
                   detectionRadio = false;
                   /*on incremente de nouveau la valeur de tabulation*/
                   tabindexValue++;
                }
                newField[i].setAttribute("tabindex",tabindexValue);
             }
          }
       }
     
       /*on insert ce noeud clone dans le formulaire avant l'element d'id writeroot*/
       var insertBeforeThis = document.getElementById('insertBeforeThis');
       insertBeforeThis.parentNode.insertBefore(newFields,insertBeforeThis);
     
       /*on redefinit aussi les tabindex suivant jusqu'a fin du formulaire*/
       var formulaireNodes = document.getElementByTagName("form").childNodes;
       for(i=0;formulaireNodes.length;i++)
       {
          if(formulaireNodes[i].id == 'insertBeforeThis') startTabindexDefinition = true;
     
          /*si on a des champs ou boutons quelquonque de formulaire, on réassigne l'attribut tabindex*/
          if(startTabindexDefinition && (formulaireNodes[i].nodeName == 'INPUT' || formulaireNodes[i].nodeName == 'SELECT' || formulaireNodes[i].nodeName == 'TEXTAREA'))
          {
             /*on incremente la valeur de tabulation*/
             tabindexValue++;
             /*si on est dans le cas exeptionnel des input de type="radio", c'est le même tabindex pour le paquet de radio*/
             if(formulaireNodes[i].type == 'radio')
             {
                formulaireNodes[i].setAttribute("tabindex",tabindexValue);
                /*on decremente tabindexValue apès redefinition*/
                tabindexValue--;
                /*on definit une variable de controle de detection de paquet de radio*/
                var detectionRadio = true;
             }
             else
             {
                /*si il y a eut precedment detection de radio, on redefinit la var de detection*/
                if(detectionRadio == true)
                {
                   detectionRadio = false;
                   /*on incremente de nouveau la valeur de tabulation*/
                   tabindexValue++;
                }
                formulaireNodes[i].setAttribute("tabindex",tabindexValue);
             }
          }
       }
     
       /*on insert la valeur du compteur dans le champs hidden d'id hiddenCounter*/
       var newHiddenCounter = document.getElementById('hiddenCounter');
       newHiddenCounter.value = counter;
    }
    function afficheCounter()
    {
       alert(counter);
    }
    j'ai pour essai pour l'instant, coté html, un input hidden comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" id="hiddenCounter" name="hidden_counter" value="10" />
    mon problème est que ma variable counter est "undefined" alors qu'un alert sur document.getElementById('hiddenCounter').value me retourne 10...

    pourquoi ma variable counter n'est pas definit depuis ma value de hiddenCounter ?

    Merci d'avance pour votre aide

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    un compteur doit être numérique.
    Or un .value est toujours de type string
    ==>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var hiddenCounter = parseInt(document.getElementById('hiddenCounter').value, 10);
    A+

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 163
    Points : 93
    Points
    93
    Par défaut
    ok, j'ai presque du mieux
    j'ai fait ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    /*on verifie si le champ hiddenCounter existe afin de definir counter*/
    var hiddenCounter = parseInt(document.getElementById('hiddenCounter').value, 10);
    var counter = (hiddenCounter > 0) ? hiddenCounter : 0;
     
    function afficheCounter()
    {
       alert(counter);
    }
    dans ce cas rien ne fonctionne (alert me retourne "undefined")
    par contre en faisant comme suit, cela fonctionne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function afficheCounter()
    {
       /*on verifie si le champ hiddenCounter existe afin de definir counter*/
       var hiddenCounter = parseInt(document.getElementById('hiddenCounter').value, 10);
       var counter = (hiddenCounter > 0) ? hiddenCounter : 0;
       alert(counter);
    }
    je remet mon code complet au cas où
    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
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    /*on verifie si le champ hiddenCounter existe afin de definir counter*/
    var hiddenCounter = parseInt(document.getElementById('hiddenCounter').value, 10);
    var counter = (hiddenCounter > 0) ? hiddenCounter : 0;
     
    function moreFields()
    {
       counter++;
     
       /*on clone le noeud du passage à recréé*/
       var newFields = document.getElementById('readroot').cloneNode(true);
       /*on redefinit l'id de celui-ci*/
       var insert = 'insert_'
       newFields.id = insert + counter;
     
       /*on definit les noeuds enfant de ce dernier*/
       var newField = newFields.childNodes;
     
       for(var i=0;i<newField.length;i++)
       {
          /*on redefinit l'attibut for du noeud label à chaque label rencontrer*/
          if(newField[i].nodeName == 'LABEL')
          {
             var lastCibleLabel = newField[i].getAttribute("for");
             newCibleLabel = lastCibleLabel + counter;
             newField[i].setAttribute("for",newCibleLabel);
          }
          /*on initialise une variable tabindexMaxi pour enregistrement de la valeur maxi de tabindex pour le clone*/
          var tabindexMaxi = '';
     
          /*si on a un champs quelquonque de forulaire, on réassigne les attributs id pour concordance au label, et name pour recuperation POST*/
          if(newField[i].nodeName == 'INPUT' || newField[i].nodeName == 'SELECT' || newField[i].nodeName == 'TEXTAREA')
          {
             newField[i].setAttribute("id",newCibleLabel);
             newField[i].name = newField[i].name + counter;
             /*pour chaque champ de formulaire detecter, on ecrase la valeur de la variable tabindexMaxi afin de détecter la valeur maxi de tabindex pour réincrémenter */
             tabindexMaxi = parseInt(newField[i].getAttribute("tabindex"), 10);
          }
       }
     
       /*on definit la valeur de depart du tabindex pour ce nouveau noeud cloner*/
       tabindexValue = tabindexMaxi * counter;
     
       /* on redefinit ensuite tout les tabindex du noeud cloner suivant counter et tabindexMaxi*/
       for(var i=0;i<newField.length;i++)
       {
          /*si on a des champs quelquonque de formulaire, on réassigne l'attribut tabindex*/
          if(newField[i].nodeName == 'INPUT' || newField[i].nodeName == 'SELECT' || newField[i].nodeName == 'TEXTAREA')
          {
             /*on incremente la valeur de tabulation*/
             tabindexValue++;
             /*si on est dans le cas exeptionnel des input de type="radio", c'est le même tabindex pour le paquet de radio*/
             if(newField[i].type == 'radio')
             {
                newField[i].setAttribute("tabindex",tabindexValue);
                /*on decremente tabindexValue apès redefinition*/
                tabindexValue--;
                /*on definit une variable de controle de detection de paquet de radio*/
                var detectionRadio = true;
             }
             else
             {
                /*si il y a eut precedment detection de radio, on redefinit la var de detection*/
                if(detectionRadio == true)
                {
                   detectionRadio = false;
                   /*on incremente de nouveau la valeur de tabulation*/
                   tabindexValue++;
                }
                newField[i].setAttribute("tabindex",tabindexValue);
             }
          }
       }
     
       /*on insert ce noeud clone dans le formulaire avant l'element d'id writeroot*/
       var insertBeforeThis = document.getElementById('insertBeforeThis');
       insertBeforeThis.parentNode.insertBefore(newFields,insertBeforeThis);
     
       /*on redefinit aussi les tabindex suivant jusqu'a fin du formulaire*/
       var formulaireNodes = document.getElementByTagName("form").childNodes;
       for(i=0;formulaireNodes.length;i++)
       {
          if(formulaireNodes[i].id == 'insertBeforeThis') startTabindexDefinition = true;
     
          /*si on a des champs ou boutons quelquonque de formulaire, on réassigne l'attribut tabindex*/
          if(startTabindexDefinition && (formulaireNodes[i].nodeName == 'INPUT' || formulaireNodes[i].nodeName == 'SELECT' || formulaireNodes[i].nodeName == 'TEXTAREA'))
          {
             /*on incremente la valeur de tabulation*/
             tabindexValue++;
             /*si on est dans le cas exeptionnel des input de type="radio", c'est le même tabindex pour le paquet de radio*/
             if(formulaireNodes[i].type == 'radio')
             {
                formulaireNodes[i].setAttribute("tabindex",tabindexValue);
                /*on decremente tabindexValue apès redefinition*/
                tabindexValue--;
                /*on definit une variable de controle de detection de paquet de radio*/
                var detectionRadio = true;
             }
             else
             {
                /*si il y a eut precedment detection de radio, on redefinit la var de detection*/
                if(detectionRadio == true)
                {
                   detectionRadio = false;
                   /*on incremente de nouveau la valeur de tabulation*/
                   tabindexValue++;
                }
                formulaireNodes[i].setAttribute("tabindex",tabindexValue);
             }
          }
       }
     
       /*on insert la valeur du compteur dans le champs hidden d'id hiddenCounter*/
       var newHiddenCounter = document.getElementById('hiddenCounter');
       newHiddenCounter.value = counter;
    }
    function afficheCounter()
    {
       alert(counter);
    }
    lors de mon test sur script complet, alert(counter); me rtourne d'abord "undefinied", et apres une ou plusieurs execution de ma fonction moreFields(), il me retourne "NaN"

    si quelqu'un à une idée sur le problème de non definition de ce compteur ?
    Ps est ce que la redefinition de newHiddenCounter semble correcte ou faut il que je passe par setAttribute()?

    merci d'avance

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 163
    Points : 93
    Points
    93
    Par défaut
    toujour ce même problème... j'ai beau reprendre de fond en comble mais pas moyen de comprendre pourquoi mon compteur n'est pas definit

    si quelqu'un à une idée

  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 640
    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 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    parceque le champs n'existe pas lorsque le ligne est interprétée ...

    soit tu mets la ligne àprès que l'input hidden soit instancié soit tu mets la ligne dasn une fonction que tu lances sur le onload ...
    par exemple :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function init(){
    var hiddenCounter = parseInt(document.getElementById('hiddenCounter').value, 10);
    var counter = (hiddenCounter > 0) ? hiddenCounter : 0;
     }
    puis dans le onload


  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 163
    Points : 93
    Points
    93
    Par défaut
    oki j'avance doucement quand à l'aboutissement de ce JS et je rencontre un probleme...

    à un moment du script je fait ceci pour determiner les noeud enfant de mon <form></form>:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var formulaireNodes = document.getElementsByTagName("form").childNodes;
       for(i=0;formulaireNodes.length;i++)
       {
          ...
       }
    Ceci me renvoi qui n'existe aucune propriété pour mon formulaireNodes.length

    Si quelqu'un a une idée

  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 640
    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 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for(i=0;i<formulaireNodes.length;i++)

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 163
    Points : 93
    Points
    93
    Par défaut
    merci je commence à avoir les yeux qui parte en vrille

    il me reste encore un soucis que je ne m'explique pas...
    je souhaite passer un tableau a ma fonction. je fait ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="javascript: addClone(array('checkbox_X','checkbox_Y'));" title="Ajouter un input">add</a>
    Firebug me retourne cette erreur: "array is not defined"

    1°) j'aimerai savoir comment faire pour passer ce tableau en parametre à ma fonction?

    2°) j'aimerai aussi savoir si je doit redefinir ce paramètre dans ma fonction, et si oui, comment faire?

    merci d'avance pour toute l'aide précieuse que vous m'apportez

  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 640
    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 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="javascript: addClone(['checkbox_X','checkbox_Y']);" title="Ajouter un input">add</a>

  10. #10
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par BeRoots Voir le message
    oki j'avance doucement quand à l'aboutissement de ce JS et je rencontre un probleme...

    à un moment du script je fait ceci pour determiner les noeud enfant de mon <form></form>:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var formulaireNodes = document.getElementsByTagName("form").childNodes;
       for(i=0;formulaireNodes.length;i++)
       {
          ...
       }
    Ceci me renvoi qui n'existe aucune propriété pour mon formulaireNodes.length
    En plus de la correction de SpaceFrog, il me semble que tu vas avoir un problème là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var formulaireNodes = document.getElementsByTagName("form")[0].childNodes;
    car getElementsByTagName() renvoie un tableau.
    Je pense que c'était ça, ton message d'erreur sur formulaireNodes.length

    A+

  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 640
    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 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    En effet EBzzzz je ne l'avais pas vue celle là ...

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 163
    Points : 93
    Points
    93
    Par défaut
    @E.Bzzz : en fait la correction de space frog suffisait amplement

    par contre j'ai encore un soucis...
    J'aimerai definir tout les element <option> d'un <select> afin d'ajouter selected="selected"; au premier <option> de ce select Think
    je fait ainsi mais j'ai l'erreur "option[j].getAttributeNode is not a function":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if(cloneChildNodes[i].nodeName == 'SELECT')
             {
                var option = cloneChildNodes[i].childNodes;
                for(var j=0;j<option.length;j++)
                {
                   /*on verifie si existence de l'attribut selected pour chaque tag <option>*/
                   var selectedDetect = option[j].getAttributeNode("selected");
    ...
    si quelqu'un a une idée

  13. #13
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par BeRoots Voir le message
    @E.Bzzz : en fait la correction de space frog suffisait amplement
    Ok, tant mieux.
    Mais attention : la synthaxe est de toutes façons fausse (à corriger, donc).

    Si ça fonctionne quand même, c'est peu être un hasard : si le nombre de form de ta page correspond au nombre de childNode du form ...

    A+

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 163
    Points : 93
    Points
    93
    Par défaut
    oki je prend note
    par contre pour ce qui est du soucis avec la recuperation des <option> de <select>, je vois vraiment pas d'où vient l'erreur
    j'ai pourtat la même syntaxe plus haut dans mon script et elle fonctionne alors que là j'ai l'erreur "option[j].getAttributeNode is not a function":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if(cloneChildNodes[i].nodeName == 'SELECT')
             {
                var option = cloneChildNodes[i].childNodes;
                for(var j=0;j<option.length;j++)
                {
                   /*on verifie si existence de l'attribut selected pour chaque tag <option>*/
                   var selectedDetect = option[j].getAttributeNode("selected");
    ...
    si quelqu'un à une idée
    merci d'avance

  15. #15
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Tu as essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    option[j].getAttribute()
    ?

    A+

  16. #16
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    pourquoi boucles-tu sur toutes les options, simplement pour sélectionner la première?

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 163
    Points : 93
    Points
    93
    Par défaut
    j'ai exactement la même erreur avec un getAttribute(); (option[j].getAttribute is not a function)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var selectedDetect = option[j].getAttribute("selected");
    le plus étrange c'est que plus haut dans mon script, j'ai le même type de contrôle et que sa passe

    je remet le code complet du js au cas où via la ligne en rouge
    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
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    var counter = 0;
    
    function addClone(defaultCheckboxChecked)
    {
       /*on definit le paramètre defaultCheckboxChecked passer à la fonction*/
       var defaultCheckboxChecked = defaultCheckboxChecked;
    
       /*on verifie si le champ hiddenCounter existe afin de definir counter*/
       var hiddenCounter = parseInt(document.getElementById('hiddenCounter').value, 10);
       counter = (hiddenCounter > 0) ? hiddenCounter : counter;
       counter++;
    
       /*on clone le noeud du passage à recréé*/
       var clone = document.getElementById('clonedZone').cloneNode(true);
       /*on redefinit l'id de celui-ci afin de le localiser*/
       var suffixeIdClone = 'clone_';
       var newCloneId = suffixeIdClone + counter;
       clone.id = newCloneId;
    
       /*on definit les noeuds enfant de ce clone*/
       var cloneChildNodes = clone.childNodes;
    
       /*on initialise les var de detection des paquets d'input radio*/
       var packRadioName, verifPackRadioName;
    
       /*pour chaque noeud enfant de ce clone*/
       for(var i=0;i<cloneChildNodes.length;i++)
       {
          /*on redefinit l'attibut for du noeud label à chaque label rencontrer*/
          if(cloneChildNodes[i].nodeName == 'LABEL')
          {
             var lastCibleLabel = cloneChildNodes[i].getAttribute("for");
             newCibleLabel = lastCibleLabel + counter;
             cloneChildNodes[i].setAttribute("for",newCibleLabel);
          }
          /*on initialise une variable tabindexMaxi pour avoir la valeur maxi de tabindex pour le clone*/
          var tabindexMaxi = '';
          /*on initialise une variable nbrTabindex pour avoir le nombre de tabindex pour le clone*/
          var nbrTabindex = 0;
    
          /*si on a un champs quelquonque de forulaire*/
          if(cloneChildNodes[i].nodeName == 'INPUT' || cloneChildNodes[i].nodeName == 'SELECT' || cloneChildNodes[i].nodeName == 'TEXTAREA')
          {
             /*on réassigne les attributs id pour concordance au label, et name pour recuperation POST*/
             var newFieldName = cloneChildNodes[i].name + counter;
             cloneChildNodes[i].setAttribute("name",newFieldName);
             cloneChildNodes[i].setAttribute("id",newCibleLabel);
    
             /*pour chaque champ de formulaire detecter, on ecrase tabindexMaxi pour détecter la valeur maxi de tabindex*/
             tabindexMaxi = parseInt(cloneChildNodes[i].getAttribute("tabindex"), 10);
             /*on incremente aussi le nombre de tabindex detecter*/
             nbrTabindex++;
    
             /*on redefinit les values des champs du clone à vide, ou via leur paramètres par default*/
             if(cloneChildNodes[i].nodeName == 'INPUT' || cloneChildNodes[i].nodeName == 'TEXTAREA')
             {
                /*si textarea ou input sauf type radio et checkbox*/
                if(cloneChildNodes[i].type && cloneChildNodes[i].type != 'radio' && cloneChildNodes[i].type != 'checkbox')
                {
                   cloneChildNodes[i].removeAttribute("value");
                }
                else
                {
                   /*on verifie si existence de l'attribut checked pour chaque radio ou checkbox*/
                   var checkedDetect = cloneChildNodes[i].getAttributeNode("checked");
    
                   /*si radio*/
                   if(cloneChildNodes[i].type == 'radio')
                   {
                      /*on definit d'abord la var verifPackRadioName à chaque fois pour comparaison avec packRadioName*/
                      verifPackRadioName = cloneChildNodes[i].name;
                      /*si PackRadioName different de verifPackRadio, on le definit ainsi qu'une var de premiere detection de pack*/
                      if(PackRadioName != verifPackRadioName)
                      {
                         packRadioName = cloneChildNodes[i].name;
                         var firstRadioDetect = true;
                      }
    
                      /*si detection d'un premier radio d'un pack radio*/
                      if(firstRadioDetect == true)
                      {
                         /*si checked n'existe pas on créé ce noeud checked*/
                         if(!checkedDetect)
                         {
                            /*on definit l'attribut checked="checked" pour le premier radio du pack*/
                            var checkedAttibute = document.createAttribute("checked");
                            checkedAttibute.nodeValue = "checked";
                            cloneChildNodes[i].setAttributeNode(checkedAttibute);
                         }
                         /*on redefinit firstRadioDetect à false*/
                         firstRadioDetect = false;
                      }
                      else
                      {
                         /*si checked existe on efface ce noeud checked completement*/
                         if(checkedDetect)
                         {
                            cloneChildNodes[i].removeAttributeNode(cloneChildNodes[i].attributes[0]);
                         }
                      }
                   }
                   /*si checkbox*/
                   else
                   {
                      /*Pour chacune des valeurs par default à checked enregistrer dans le tableau defaultCheckboxChecked, on definit une variable de controle d'existance*/
                      for(var j=0;j<defaultCheckboxChecked.length;j++)
                      {
                         if(defaultCheckboxChecked[j] == cloneChildNodes[i].name)
                         {
                            var defaultCheckboxDetect = true;
                         }
                      }
    
                      /*si le checkbox en question à sa valeur par default à checked*/
                      if(defaultCheckboxDetect == true)
                      {
                         /*si checked n'existe pas on créé ce noeud checked*/
                         if(!checkedDetect)
                         {
                            /*on definit l'attribut checked="checked"*/
                            var checkedAttibute = document.createAttribute("checked");
                            checkedAttibute.nodeValue = "checked";
                            cloneChildNodes[i].setAttributeNode(checkedAttibute);
                         }
                         /*si checked existe, on le redefinit uniquement*/
                         else
                         {
                            /*on definit l'attribut checked="checked"*/
                            cloneChildNodes[i].setAttribute(checkedAttibute);
                         }
                         /*on reinitialise defaultCheckboxDetect à false*/
                         defaultCheckboxDetect = false;
                      }
                      else
                      {
                         /*si checked existe on efface ce noeud checked completement*/
                         if(checkedDetect)
                         {
                            cloneChildNodes[i].removeAttributeNode(cloneChildNodes[i].attributes[0]);
                         }
                      }
                   }
                }
             }
             if(cloneChildNodes[i].nodeName == 'SELECT')
             {
                var option = cloneChildNodes[i].childNodes;
                for(var j=0;j<option.length;j++)
                {
                   /*on verifie si existence de l'attribut selected pour chaque tag <option>*/
                   var selectedDetect = option[j].getAttributeNode("selected");
    
                   /*si c'est le premier tag option, on definit à selected par defaut*/
                   if(j == 0)
                   {
                      /*si selected n'existe pas on créé ce noeud selected*/
                      if(!selectedDetect)
                      {
                         var selectedAttibute = document.createAttribute("selected");
                         selectedAttibute.nodeValue = "selected";
                         option[j].setAttributeNode(selectedAttibute);
                      }
                   }
                   else
                   {
                      /*si selected existe, on supprime ce noeud selected*/
                      if(selectedDetect)
                      {
                         option[j].removeAttributeNode(option[j].attributes[0]);
                      }
                   }
                }
             }
          }
       }
    
       /*on definit la valeur de depart du tabindex pour ce clone*/
       tabindexValue = tabindexMaxi * counter;
    
       /*on reinitialise les var de detection des paquets d'input radio*/
       packRadioName = '';
       verifPackRadioName = '';
    
       /* on redefinit ensuite tout les tabindex du clone*/
       for(var i=0;i<cloneChildNodes.length;i++)
       {
          /*si on a des champs quelquonque de formulaire, on réassigne l'attribut tabindex*/
          if(cloneChildNodes[i].nodeName == 'INPUT' || cloneChildNodes[i].nodeName == 'SELECT' || cloneChildNodes[i].nodeName == 'TEXTAREA')
          {
             /*si on est dans le cas exeptionnel des input de type="radio", c'est le même tabindex pour le paquet de radio*/
             if(cloneChildNodes[i].type == 'radio')
             {
                /*on definit d'abord la var verifPackRadioName à chaque fois pour comparaison avec packRadioName*/
                verifPackRadioName = cloneChildNodes[i].name;
                /*si PackRadioName different de verifPackRadio, on le definit ainsi qu'une var de premiere detection de pack*/
                if(PackRadioName != verifPackRadioName)
                {
                   packRadioName = cloneChildNodes[i].name;
                   var firstRadioDetect = true;
                }
    
                /*si detection d'un premier radio d'un pack radio*/
                if(firstRadioDetect == true)
                {
                   /*on incremente la valeur de tabulation*/
                   tabindexValue++;
                   /*on redefinit la valeur de tabindex*/
                   cloneChildNodes[i].setAttribute("tabindex",tabindexValue);
                   /*on redefinit la variable de detection firstRadioDetect à false*/
                   var firstRadioDetect = false;
                }
                else
                {
                   /*on redefinit la valeur de tabindex sans réincrementer tabindexValue*/
                   cloneChildNodes[i].setAttribute("tabindex",tabindexValue);
                }
             }
             else
             {
                /*on incremente la valeur de tabulation*/
                tabindexValue++;
                /*on redefinit la valeur de tabindex*/
                cloneChildNodes[i].setAttribute("tabindex",tabindexValue);
             }
          }
       }
    
       /*on insert ce noeud clone dans le formulaire avant l'element d'id writeroot*/
       var insertCloneBeforeThis = document.getElementById('insertCloneBeforeThis');
       insertCloneBeforeThis.parentNode.insertBefore(clone,insertCloneBeforeThis);
    
       /*on redefinit aussi les tabindex suivant jusqu'a fin du formulaire*/
       var formulaireNodes = document.getElementsByTagName("form")[0].childNodes;
    
       /*on reinitialise les var de detection des paquets d'input radio*/
       packRadioName = '';
       verifPackRadioName = '';
    
       for(i=0;i<formulaireNodes.length;i++)
       {
          /*on definit une variable de controle du point de depart de la renumerotation des tabindex*/
          if(formulaireNodes[i].id == 'insertCloneBeforeThis') startTabindexDefinition = true;
    
          /*si on a des champs ou boutons quelquonque de formulaire, on réassigne l'attribut tabindex*/
          if(startTabindexDefinition && (formulaireNodes[i].nodeName == 'INPUT' || formulaireNodes[i].nodeName == 'SELECT' || formulaireNodes[i].nodeName == 'TEXTAREA'))
          {
             /*si on est dans le cas exeptionnel des input de type="radio", c'est le même tabindex pour le paquet de radio*/
             if(formulaireNodes[i].type == 'radio')
             {
                /*on definit d'abord la var verifPackRadioName à chaque fois pour comparaison avec packRadioName*/
                verifPackRadioName = formulaireNodes[i].name;
                /*si PackRadioName different de verifPackRadio, on le definit ainsi qu'une var de premiere detection de pack*/
                if(PackRadioName != verifPackRadioName)
                {
                   packRadioName = formulaireNodes[i].name;
                   var firstRadioDetect = true;
                }
    
                /*si detection d'un premier radio d'un pack radio*/
                if(firstRadioDetect == true)
                {
                   /*on incremente la valeur de tabulation*/
                   tabindexValue++;
                   /*on redefinit la valeur de tabindex*/
                   formulaireNodes[i].setAttribute("tabindex",tabindexValue);
                   /*on redefinit la variable de detection firstRadioDetect à false*/
                   var firstRadioDetect = false;
                }
                else
                {
                   /*on redefinit la valeur de tabindex sans réincrementer tabindexValue*/
                   formulaireNodes[i].setAttribute("tabindex",tabindexValue);
                }
             }
             else
             {
                /*on incremente la valeur de tabulation*/
                tabindexValue++;
                /*on redefinit la valeur de tabindex*/
                formulaireNodes[i].setAttribute("tabindex",tabindexValue);
             }
          }
       }
    
       /*on insert la valeur du compteur dans le champs hidden d'id hiddenCounter*/
       var newHiddenCounter = document.getElementById('hiddenCounter');
       newHiddenCounter.setAttribute("value", counter);
       /*on insert la valeur du nbr de tabindex du clone dans le champs hidden d'id nbrTabindex*/
       var newNbrTabindex = document.getElementById('nbrTabindex');
       newNbrTabindex..setAttribute("value", nbrTabindex);
    }
    function afficheCounter()
    {
       alert(counter);
    }
    
    function deleteLastClone()
    {
       /*on definit l'id du dernier noeud clone ajouter*/
       var suffixeIdClone = 'clone_';
       lastCloneId = suffixeIdClone + counter;
    
       /*on decremente le compteur*/
       if(counter > 0) counter--;
    
       /*on supprime le dernier noeud clone ajouter si il y en a un*/
       var lastClone = document.getElementById(lastCloneId);
       if(lastClone)
       {
          document.getElementById(lastCloneId).parentNode.removeChild(document.getElementById(lastCloneId));
       }
    
       /*on redefinit aussi les tabindex suivant jusqu'a fin du formulaire*/
       var formulaireNodes = document.getElementsByTagName("form")[0].childNodes;
       for(i=0;i<formulaireNodes.length;i++)
       {
          /*on recupere la valeur du nbr de tabindex du clone depuis le champs hidden d'id nbrTabindex*/
          var nbrTabindex = parseInt(document.getElementById('nbrTabindex').value, 10);
    
          /*on definit une variable de controle du point de depart de la renumerotation des tabindex*/
          if(formulaireNodes[i].id == 'insertCloneBeforeThis') startTabindexDefinition = true;
          else startTabindexDefinition = false
          /*si on a des champs ou boutons quelquonque de formulaire, on réassigne l'attribut tabindex*/
          if(startTabindexDefinition == true && (formulaireNodes[i].nodeName == 'INPUT' || formulaireNodes[i].nodeName == 'SELECT' || formulaireNodes[i].nodeName == 'TEXTAREA'))
          {
             /*on recupere la valeur de tabindex du champs de formulaire*/
             var tabindexValueRecup = formulaireNodes[i].getAttribute("tabindex");
             newTabindexValue = tabindexValueRecup - nbrTabindex;
             formulaireNodes[i].setAttribute("tabindex",newTabindexValue);
          }
       }
    
       /*on insert la valeur du compteur dans le champs hidden d'id hiddenCounter*/
       var newHiddenCounter = document.getElementById('hiddenCounter');
       newHiddenCounter.value = counter;
    }
    si quelqu'un à une idée

    @javatwister: regarde ma fonction, en fait je boucle sur toute pour effacer les selected="selected" possible sur <option> en vue d'un retour sur formulaire (erreur)

  18. #18
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    en l'occurrence, ton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var option = cloneChildNodes[i].childNodes;
    est dangereux;
    Je te conseille:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var option = cloneChildNodes[i].getElementsByTagName("option");
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var option = cloneChildNodes[i].options;

  19. #19
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    et franchement, à la place de

    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
    for(var j=0;j<option.length;j++)
                {
                   /*on verifie si existence de l'attribut selected pour chaque tag <option>*/
                   var selectedDetect = option[j].getAttributeNode("selected");
     
                   /*si c'est le premier tag option, on definit à selected par defaut*/
                   if(j == 0)
                   {
                      /*si selected n'existe pas on créé ce noeud selected*/
                      if(!selectedDetect)
                      {
                         var selectedAttibute = document.createAttribute("selected");
                         selectedAttibute.nodeValue = "selected";
                         option[j].setAttributeNode(selectedAttibute);
                      }
                   }
                   else
                   {
                      /*si selected existe, on supprime ce noeud selected*/
                      if(selectedDetect)
                      {
                         option[j].removeAttributeNode(option[j].attributes[0]);
                      }
                   }
                }
    je verrais bien:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for(var j=0;j<option.length;j++){
    	option[j].selected=false
    }
     
    option[0].selected=true;

  20. #20
    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 640
    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 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    pourquoi ne pas forcer le selectdIndex directement ?

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

Discussions similaires

  1. Réaliser un compteur depuis une date précise
    Par g0g059 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/12/2010, 14h23
  2. [DATA] missing values dans l'importation depuis SPSS
    Par Claude_S dans le forum SAS Base
    Réponses: 8
    Dernier message: 22/07/2009, 09h38
  3. Affecter value à un input depuis un href
    Par fabou3377 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/08/2007, 19h46
  4. Réponses: 1
    Dernier message: 29/08/2006, 16h29
  5. [FLASH MX] Définir une position x fixe : depuis la droite
    Par Miles Raymond dans le forum Flash
    Réponses: 14
    Dernier message: 07/07/2006, 15h48

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