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 :

Problème de tableau javascrpt


Sujet :

JavaScript

  1. #1
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut Problème de tableau javascrpt
    Bonjour à tous,

    Je finalise un formulaire web (HTML/JAVASCRIPT) qui va permettre à des étudiants de choisir des cours.

    Pour ce faire, ils doivent choisir un cours dans une select list et ensuite cocher une case à cocher pour choisir le type du cours (théorie, TP ou exercice).

    Quand l'étudiant choisit le cours dans la select list, le nom du cours apparaît directement dans une zone de texte.

    Le problème est que depuis que j'ai ajouté des cours, il indique le nom d'un cours qui ne correspond pas au mnémonic choisi.

    Voici le code :

    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
    var nom_matiere = new Array('',
    									'Biochimie médicale',//BIOC 008 A KUMPS MA1 (2e GRADE)
    									'Biologie générale',//BIOL-J-101 DE VOS BA1
    									'Biologie végétale',//BIOL-J-102 LEJOLY BA1
    									'Microbiologie, immunologie et hygiène',//BIOL-J-301 DEVLEESCHOUWER BA3
    									'Chimie générale et introduction à la chimie organique',//
    									'Physique expérimentale',
    									'Biologie générale',
    									'Biologie végétale',
    									'Mathématiques',
    									'Projet transdisciplinaire en sciences expérimentales',
    									'Pharmacie et société',									
    									'Introduction botanique à la pharmacognosie...',
    									'Biologie moléculaire et cellulaire',
    									'Biochimie générale et humaine',
    									'Chimie organique',
    									'Pratique de l\'outil informatique',
    									'Physiologie et anatomie humaines',
    									'',
    									'Analyse pharmaceutique : méthodes physico-chimiques...',
    									'Analyse pharmaceutique : méthodes spectroscopiques',
    									'','','','','',
    									'Biostatistique',
    									'Projet transdisciplinaire en sciences du vivant',
    									'Projet transdisciplinaire en analyse spectrale',
    									'','','','','','','','','','','');
    C'est le tableau qui reprend le nom des cours (dans l'ordre).
    Quand je fais une fenêtre affiche tous les cours.

    voici le code de la select list :

    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
     <select name="select4" id="select4" onChange="maj()">
              <option select=""> Choissisez une matière</option>
              <option value="1">BIOC-008</option>
    		  <option value="2">BIOL-J-101</option>
    		  <option value="3">BIOL-J-102</option>
    		  <option value="4">BIOL-J-201</option>
              <option value="5">BIOL-J-301</option>
              <option value="6">BMOL-J-201</option>
              <option value="7">BMOL-J-202</option>
              <option value="8">CHIM-J-101</option>
    		  <option value="9">CHIM-J-201</option>
              <option value="10">DROI-016</option>
    		  <option value="11">ETHI-005</option>
    		  <option value="12">INFO-J-201</option>
              <option value="13">MATH-F-109-B</option>
    		  <option value="14">MEDI-J-201</option>
              <option value="15">MEDI-J-301</option>
    		  <option value="16">PHAR-006</option>
    		  <option value="17">PHAR-039</option>
              <option value="18">PHAR-043</option>
    		  <option value="19">PHAR-083</option>
    		  <option value="20">PHAR-093</option>	
    		  <option value="21">PHAR-094</option>
    		  <option value="22">PHAR-095</option>
    		  <option value="23">PHAR-J-201</option>
              <option value="24">PHAR-J-202</option>
              <option value="25">PHAR-J-301</option>
              <option value="26">PHAR-J-302</option>
              <option value="27">PHAR-J-303</option>
              <option value="28">PHAR-J-304</option>
              <option value="29">PHAR-J-305</option>
              <option value="30">PHYS-J-101</option>
    		  <option value="31">TOXI-016</option>
    		  <option value="32">TRAN-J-101</option>
    		  <option value="33">TRAN-J-102</option>
    		  <option value="34">STAT-J-201</option>
              <option value="35">TRAN-J-201</option>
              <option value="36">TRAN-J-202</option>
              <option value="37">TRAN-J-301</option>
              <option value="38">TRAN-J-302</option>
            </select>
    Son action est onchange, il va chercher maj()

    La foncton maj est ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function maj() {
    				t = document.getElementById('CI1');	
    				s = document.getElementById('select4');
    				alert(s.value);
    				t.value = nom_matiere[s.options[s.selectedIndex].value];
    				alert(t.value);
    				maj_checkbox();
    				maj_checkboxCI1TP();				
    				maj_checkboxCI1EX();
    				document.form1.hfCI1.value=t.value;
    				document.form1.hfCI1mnemonic.value = s.value;}
    Quand je fais alert(s.value); j'obtiens 1 pour le premier mnémonic, nommé BIOC 008 qui devrait indiqué dans la zone de texte "biochimie médicale".

    Quand je fais alert(t.value), il me donne un autre nom de cours, je pense donc que le problème se trouve ici ? Il me donne le nom du cours "Introduction Botanique à la Pharmacognosie..."

    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
    function maj_checkbox() {
    			//TABLEAU D'ECTS
    			//c'est ici qu'on change la valeur des ECTS !!!!!!!!!!!!
    			//0 correspond à choississez une matière
    		var credits = new Array(0,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);	// Tableau des crédits ECTS. On retrouve 21 valeur ce qui correspond au nombre d'option disponible dans ton select. A toi de choisir la valeur des crédits ECTS en fonction de la matière. J'ai fais simple pour l'exemple mais les nombres peuvent très bien changer ;)
    			cCI1TH = document.getElementById('cbCI1TH');	// On récupère la checkbox qui a pour id="checkboxECTS"  (correspond à TH)
    			cCI1TH_val = document.getElementById('ECTSCI1TH');	// On récupère le input text à coté de la checkbox
    			s = document.getElementById('select4');	
    			if(cCI1TH.checked) {		// On test si la checkbox est coché
    				cCI1TH_val.value = credits[s.options[s.selectedIndex].value];	// Puis on met à jour le input text en récupèrant la valeur de la matière selectionné et en allant cherché le nombre de crédits ECTS dans le tableau credits
    				//alert(cCI1TH_val.value);
    				ECTSCITH = cCI1TH_val.value;
    				//alert(ECTSCITH);
    				//document.form1.txtTotalECTS.value = ECTSCITH.value;
    				document.form1.hfCI1TH.value=cCI1TH_val.value;
     
    			} else {
    				cCI1TH_val.value = " ";	// Si la checkbox est décoché on met une chaine vide pour les crédits ECTS.
    			}
    //			somme();		
    					}
    	</script>
    Cette fonction permet de mettre à jour les valeurs du type de cours (th tp ou ex) cette partie du code fonctionne étrangement bien.

    Voyez-vous ce qui ne permet pas au progamme de d'assoicier le mnémonic et son intitulé de cours ?

    Merci d'avance pour l'aide que vous m'apporterez.

    beegees

  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 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 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    un array en javascript ne tolère pas de commentaires ....


    [edit ]
    ha si je m'y prenais mal ...
    j'ai rien dit ...
    [edit]

  3. #3
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Bonjour SpaceFrog,

    Malheureusement, le fait de retirer les commentaires n'arrange pas le problème.

    J'espère que quelqu'un trouvera car je suis dans une situation assez critique vue que la rentrée académique est la semaine prochaine.

    Je continue à chercher une solution ou un solution aleternative.

    beegees

  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 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 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    tes values commencent à 1
    les indices d'array commencent à 0
    le selected index commence à 0

    tu as un décallage d'un non ?

  5. #5
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Re-bonjour SpaceFrog,

    Merci pour ta réponse.

    Le décalage n'est pas de 1.



    Le premier mnemonic (BIOC 008) devrait correspondre au premier nom de cours ci-dessous mais ce n'est pas le cas :

    'Biochimie médicale',
    'Biologie générale',
    'Biologie végétale',
    'Microbiologie, immunologie et hygiène',
    'Chimie générale et introduction à la chimie organique',
    'Physique expérimentale',
    'Biologie générale',
    'Biologie végétale',
    'Mathématiques',
    'Projet transdisciplinaire en sciences expérimentales',
    'Pharmacie et société',
    il donne celui-ci 'Introduction botanique à la pharmacognosie...',

    j'insère le code en attachment.

    Merci à tous.

    beegees

  6. #6
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    à la place du deuxième tableau, on ne pourraît pas utiliser un select case genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    switch (s)  
    case 1 : {t.value = 'Biochimie médicale'};

    Merci

    bgs

  7. #7
    Membre averti Avatar de Hug0_76
    Profil pro
    Inscrit en
    Août 2006
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 292
    Points : 332
    Points
    332
    Par défaut
    Salut, beegees!
    Alors c'est quoi déjà ton problème??
    Tu rajoutes des matières et ca plante??
    où est ce que tu comptes rajouter des matières?

    Pk cela ne te fait plus le total des ECTS?? Tu as modifié qqc?
    Pour le total c'est bon j'ai vu :p!

  8. #8
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Salut Hug0_76,

    J'ajoute des cours dans la liste de sélection, j'ajoute ensuite les cours dans le tableau nom_matiere et dans le tableau de crédits mais ça plante.

    Quand je choisis le premier cours "BIOC 008", il me donne comme intitulé "Pharmacognosie..." alors que c'est Biochimie Médicale.

    Il me semble que le code s'embrouille dans les tableaux.

    Qu'en penses-tu ?

    Merci !!!!!

    beegees

  9. #9
    Membre averti Avatar de Hug0_76
    Profil pro
    Inscrit en
    Août 2006
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 292
    Points : 332
    Points
    332
    Par défaut
    On va reprendre!

    Effectivement, il est judicieux de changer le nom de tes tableaux surtout qu'ils ont tous la même référence en mémoire : nom_matiere.


    Le fait de séparer tes fonctions par un <script language="javascript" type="text/javascript"> n'empêche pas l'utilisation des tableaux déclarés au dessus ou en dessous!
    Commence déjà par changer tous tes noms de tableaux (des nom distincts : nom_matiere1, nom_matiere2, etc...)

    Ensuite revérifie!

  10. #10
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    ok je le fais tout de suite et je te dis quoi.

    bgs

  11. #11
    Membre averti Avatar de Hug0_76
    Profil pro
    Inscrit en
    Août 2006
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 292
    Points : 332
    Points
    332
    Par défaut
    Sinon autre remarque,

    En tout dans ta page, j'ai vu qu'il y a 12 tableaux !!!!
    Est tu certains de tous t'en servir????


    Ensuite tu sépares toutes les fonctions qui sont par couple de trois par une balise ouvrante : <script> puis une balise fermante </script>.
    C'est inutile et pas très jolie !
    Si ca peu t'aider pourquoi pas mais bon je ne te conseille pas faire tes séparations de fonctions javascript comme ca!

    Au vu du nombre de fonction javascript que tu possèdes, je pense que tu devrais les mettres dans un fichier séparé, comme ca tu t'y retrouveras plus facilement!

  12. #12
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Je pense que ta solution est la bonne (celle de renommé les tableaux), je te dis donc :



    Très fort Hug0_76...

    Pour ce qui est de tes conseils, je suis ultra partant.

    On devrait alors créer trois fichiers .js, y intégrer le code, et ensuite appeler les fichiers .js.

    Tu crois que ça fonctionnerait comme ça ?

    Tu crois que ça ralentirais pas le code ?

    Un super grand à l'un des membres les plus sympa de developpez !

    beegees

  13. #13
    Membre averti Avatar de Hug0_76
    Profil pro
    Inscrit en
    Août 2006
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 292
    Points : 332
    Points
    332
    Par défaut
    Oui en effet tu devrais créer des fichiers js séparé!
    Après je ne sais pas pour le nombre, à toi de voir comment tu veux séparer ton code!

    Quant au fait de ralentir le code, ne tkt pas pour ca, puisqu'en fait tes fichiers seront inclus dans ta page!

    Tu ne sais pas comment faire??
    Au moment de ta déclaration html :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <html>
    <head>
    <title>Ton titre</title>
    <script language="javascript" type="text/javascript" src="fichier.js"></script>
    ....
    </head>
    <body>
    ...
    </body> 
    </html>
    On devrait alors créer trois fichiers .js, y intégrer le code, et ensuite appeler les fichiers .js.
    => Ce n'est pas les fichiers js que tu appels, mais tes fonctions

    Au fait ca marche avec des noms de tableaux différents??

  14. #14
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Merci pour ta réponse très complète.

    Ce que je vais faire pour l'instant est créer les tableaux (les améliorer) et ensuite j'introduierai le code dans des fonctions .js et j'utiliserai ta méthode pour les appeler (comment t'as deviné que je savais pas compment faire ? ).

    Au fait ca marche avec des noms de tableaux différents??


    Je pense que ça fonctionne, tu es trop fort mon Ami !

    Merci pour tout !

    beegees

  15. #15
    Membre averti Avatar de Hug0_76
    Profil pro
    Inscrit en
    Août 2006
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 292
    Points : 332
    Points
    332
    Par défaut
    de rien

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

Discussions similaires

  1. Débutant en Javascript : problème de tableau !
    Par bluheim dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/11/2005, 15h03
  2. [XHTML] problème de tableau
    Par virgul dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 28/04/2005, 07h18
  3. Problème de tableau
    Par tom06440 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 26/04/2005, 20h30
  4. Problème de tableau
    Par krfa1 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 08/02/2005, 11h09

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