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 :

Nouveau probléme JS


Sujet :

JavaScript

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 28
    Par défaut Nouveau probléme JS
    Bonjour,

    Voila j'ai un nouveau probléme le code suivant retourne : Uncaught TypeError: Cannot read property 'undefined' of undefined , au lieu de par exemple la note x corespond a la note y...

    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
     window.onload = function() {
     
    	document.getElementById("titre").innerHTML='<p> Notation classique notation américaine </p>';
     
    		note={'Choisir...':'error','Do':'C','Ré':'D','Mi':'E','Fa':'F','Sol':'G','La':'A','Si':'B'};
     
    		var form=document.createElement('form');/*Création du formulaire*/
     
    			form.id='liste';
    			form.name='liste';
     
    		titre.appendChild(form);
     
     
    		var span=document.createElement('span');/*Création du span*/
     
    		span.innerHTML='Choisissez la note classique à convertir en note américaine : ';
     
    		var select=document.createElement('select');/*Création du select*/
     
    			select.id='sel';
     
    			for (var i in note)
    			{
    				var option=document.createElement('option');/*Création des options*/
     
    				option.value=i;
    				option.innerHTML=i;
     
    				select.appendChild(option);
    			}
     
    			form.appendChild(span);	
    			span.appendChild(select);
     
    	select.onchange=alert('La note classique '+this.options[this.selectedIndex].value+' correspond à la note américaine '+note[this.options[this.selectedIndex]]+' .');
    }
    Si quelqu'un peut m'aider cordialement...

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 28
    Par défaut
    Changement de code et la c'est la fonctionValider() qui ne veut pas se lancer :

    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
     window.onload = function() {
     
    	document.getElementById("titre").innerHTML='<p> Notation classique notation américaine </p>';
     
    		note={'Choisir...':'error','Do':'C','Ré':'D','Mi':'E','Fa':'F','Sol':'G','La':'A','Si':'B'};
     
    		var form=document.createElement('form');/*Création du formulaire*/
     
    			form.id='liste';
    			form.name='liste';
     
    		titre.appendChild(form);
     
     
    		var span=document.createElement('span');/*Création du span*/
     
    		span.innerHTML='Choisissez la note classique à convertir en note américaine : ';
     
    		var select=document.createElement('select');/*Création du select*/
     
    			select.name='selname';
    			select.id='sel';
    			select.onchange='fonctionValider()';
     
    			for (var i in note)
    			{
    				var option=document.createElement('option');/*Création des options*/
     
    				option.value=i;
    				option.innerHTML=i;
     
    				select.appendChild(option);
    			}
     
    			form.appendChild(span);	
    			span.appendChild(select);
    }
     
    function fonctionValider(){
     
    	var selec = document.getElementById('sel');
    	var nomNoteChoisi = selec.options[selec.selectedIndex].value;
     
    	alert(nomNoteChoisi);
     
    	for(i in note){
    		if(nomNoteChoisi==i){
    			alert('La note classique '+nomNoteChoisi+' correspond à la note américaine '+note[i]+' .');
    		}
    	}
    }

  3. #3
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    on n'écrit pas select.onchange='fonctionValider()'; mais select.onchange=fonctionValider;.
    onchange doit être une fonction pas une string.

    évite les get dans la gestion des événement ça sert à rien est àa bouffe des ressurces
    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
    window.onload = function() {
     
      document.getElementById("titre").innerHTML='<p> Notation classique notation américaine </p>';
     
        note={'Choisir...':'error','Do':'C','Ré':'D','Mi':'E','Fa':'F','Sol':'G','La':'A','Si':'B'};
     
        var form=document.createElement('form');/*Création du formulaire*/
     
        form.id='liste';
        form.name='liste';
     
        titre.appendChild(form);
     
     
        var span=document.createElement('span');/*Création du span*/
     
        span.innerHTML='Choisissez la note classique à convertir en note américaine : ';
     
        var select=document.createElement('select');/*Création du select*/
     
          select.name='selname';
          select.id='sel';
          //on affecte directement la fonction à onchange pas besoin de la crée ailleurs et de la passer par référence.
          select.onchange= function (){
               // vu que c'est la fonction onchange du select l'objet this est le select lui même donc pas besoin de le chercher dans le DOM
               if (0 == this.selectedIndex) {
                 //on a sélectionné {'Choisir...':'error' on resset la valeir et on quitte la fonction
                 this.value = ''
               } else {
                 //on a sélectionné la valeur d'index this.selectedIndex et de valeur this.value
                 alert("l'index est "+ this.selectedIndex.value+' et la valeur '+this.value+' .');
               }
             };
     
          for (var i in note)
          {
            var option=document.createElement('option');/*Création des options*/
     
            option.value=note[i];
            option.innerHTML=i;
     
            select.appendChild(option);
          }
     
          form.appendChild(span);
          span.appendChild(select);
    }
    A+JYT

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 28
    Par défaut
    Merci pour votre réponse en effet cela fonctionne...

    A force de coder toutes la semaine, je n'arrive même a apercevoir cette erreur banale...

    Encore merci

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

Discussions similaires

  1. [C#] utilisation d'évênements [nouveau problème]
    Par legillou dans le forum Windows Forms
    Réponses: 10
    Dernier message: 18/08/2006, 09h37
  2. [PHP & HTML] Nouveau : Problème
    Par Jihnn dans le forum Langage
    Réponses: 15
    Dernier message: 27/06/2006, 20h08
  3. nouveau problème sur un searchResults
    Par nighthammer dans le forum Zope
    Réponses: 8
    Dernier message: 27/06/2006, 11h08
  4. nouveau problème avec le separator
    Par boudou dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 21/02/2006, 14h25
  5. Nouveau problème de récupération de valeurs.
    Par pmboutteau dans le forum ASP
    Réponses: 4
    Dernier message: 09/03/2005, 10h48

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