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 :

valeur de variable a la place du nom dans document.


Sujet :

JavaScript

  1. #1
    Membre éclairé
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Points : 689
    Points
    689
    Par défaut valeur de variable a la place du nom dans document.
    Bonjour,

    J'ai ecris une petite fonciton javascript mais j'ai un soucis dans le traitement du formulaire. En effet, document.nomFormulaire cherche le formulaire portant le nom "nomFormulaire" au lieu de lire le contenu de la variable (qui contient le vrai nom du formulaire). Comment explique a Javascript que ce nom contient la vrai chaine ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function verificationGlobale(nomFormulaire,tabChamps) {
     
    	for (var i=0;i<tabChamps.length;i++) {
     
    		//alert(tabChamps[i][0])
     
    		verificationChamp(document.nomFormulaire.tabChamps[i][0],tabChamps[i][1])
     
    	}
     
    }

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 123
    Points : 111
    Points
    111
    Par défaut
    Il suffit d'utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById(nomFormulaire)
    plutôt que
    Tu nous diras si ça fonctionne

  3. #3
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Ou sinon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.forms[nomFormulaire]...

  4. #4
    Membre éclairé
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Points : 689
    Points
    689
    Par défaut
    Bonjour,

    En fait, grafik.muzik, je n'utilise pas getElementById dans mon script parce que je prefere utiliser les fonctions dediees aux formulaires dans mes traitements de formulaires, une facon de ne pas melanger les torchons et les serviettes ...

    Bovino, ta solution fonctionne sur le premier terme (l'objet de ma questions), j'ignorais que tous les forms etaient contenus dans un tableau, c'est note !

    Le soucis se pose sur le terme suivant maintenant a savoir l'element de formulaire (un champ input).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.forms[nomFormulaire].tabChamps[i][0]
    Cette ligne me renvoi l'erreur tabChamp (tableau contenant des tableaux de noms d'elements) non defini, existe-t-il une ruse de language pour faire prendre en compte cet element egalement ?

  5. #5
    Membre expérimenté Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Points : 1 388
    Points
    1 388
    Par défaut
    Autant pour le nom du formulaire tu peux passer par ta syntaxe, autant pour les champs à l'intérieur de celui ci, tu ferais mieux de passer par getElementById pour la simple raison que si un jour tu dois rajouter un champ dans ton formulaire, ca va décaler tous tes indices et tu devras les modifier dans toutes tes fonctions.

  6. #6
    Membre éclairé
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Points : 689
    Points
    689
    Par défaut
    Je ne comprend pas bien le rapport avec les indices. En fait ma fonction prend en entree un tableau de type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new Array(nomChamp,typeChamp)
    typeChamp est utile pour la verification du type (telephone, mail, date, etc ...)

    J'appelle ma fonction avec la commande suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script>verificationGlobale('monFormulaire',new Array(new Array('nom','texte'),new Array('telephone','telephone')))</script>
    Et ma fonction est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function verificationGlobale(nomFormulaire,tabChamps) {
     
    	for (var i=0;i<tabChamps.length;i++) {
     
    		//alert(tabChamps[i][0])
     
    		verificationChamp(document.forms[nomFormulaire].tabChamps[i][0],tabChamps[i][1])
     
    	}
     
    }
    Il n'y a pas de decalage possible puisque ma boucle lis tous les elements et les appelle par leur nom.

    Ma question porte donc simplement sur la lecture de tabChamp[i][0], contenant le nom de l'element courant.

  7. #7
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    En quoi tabChamps est une propriété de form? Là est ton erreur.
    Dans ta façon de faire, tu ne peux accéder aux éléments de ton formulaires qu'en passant par la collection form.elements donc les éléments ne sont accessible que par indice et non par nom.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for (var i=0;i<document.getElementById(nomFormulaire).elements;i++) {
       if (document.getElementById(nomFormulaire).elements[i]=="nom" || document.getElementById(nomFormulaire).elements[i]=="telephone") {	
          verificationChamp(bla, bla);
       }	
    }
    Code facilement améliorable, c'est juste pour donner une idée.

  8. #8
    Membre éclairé
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Points : 689
    Points
    689
    Par défaut
    Imaginons que j'ai un champ nomme noTelephone qui doit contenir un numero de telephone.

    j'initialise un tableau contenant le nom du champ et son type :
    new Array('noTelephone','telephone')

    Ensuite, dans ma fonction, j'utilise en entree un tableau contenant tous les tableaux de champs (telephone et les autres).

    L'objectif est de generer pour chaque element un ligne du type :
    verificatioChamp(document.monFormulaire.noTelephone).
    verificatioChamp(document.monFormulaire.adresseMail).
    ...

    pour ce faire, ma fonction utilise les elements fournis en entree, a savoir le nom du formulaire, que l'on retrouve grace a nomFormulaire et forms[nomFormulaire].

    Reste a generer la deuxieme partie de la ligne noTelephone en remplacant par la valeur de tabChamp[i][0] ou i est l'element courant (le tableau (noTelephone,telephone)) et 0 son premier element (noTelephone).

    Je ne comprend pas pourquoi c'est impossible ... En effet, tabChamp n'est pas une propriete de mon formulaire, et ma question porte sur le fait de remplacer tabChamp[i][0] par sa valeur pour que la ligne ai un sens.

  9. #9
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Fais deux boucles, une qui parcoures les éléments du formulaire et une qui parcours ton tableau.

  10. #10
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.forms[nomFormulaire].elements[tabChamps[i][0]]

  11. #11
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Bon je me rhabille...

  12. #12
    Membre éclairé
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Points : 689
    Points
    689
    Par défaut
    Super,

    La solution proposee par Matthieu2000 est celle que je cherchais. Le script fonctionne.

    Merci quand meme franculo_caoulene pour tes pistes de recherche.

    Sujet resolu ^^.



    Matt

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 19
    Dernier message: 18/12/2013, 23h39
  2. Nom de variable à la place du nom d'une feuille de calcul
    Par Stargate SG1 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/12/2007, 09h37
  3. nom d'une liste à partir de valeurs de variables
    Par pedro99 dans le forum Général Python
    Réponses: 5
    Dernier message: 27/06/2007, 17h54
  4. Réponses: 2
    Dernier message: 21/06/2007, 08h44
  5. Réponses: 16
    Dernier message: 18/01/2007, 17h46

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