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 dans un tableau qui ne s'affiche pas - Cannot read property '1' of undefined


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 141
    Par défaut Valeur dans un tableau qui ne s'affiche pas - Cannot read property '1' of undefined
    Bonjour à tous ,

    j'ai un soucis avec un script.
    Des valeurs sont dans un tableau à deux dimensions.

    je voulais simplement réaliser un affichage :

    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
    function affiche()
    { 
    ...
     
    for(var i=1; i<= monTableau.length; i++){
    			for(var j=0; j<= 29; j++){
    	if ( i == 1 ) 
    {
    			res = 
    		"<center><h3 style='color:#3d85c6';> Information </h3></center>"+
    		"<p style='color:#3d85c6';> "+other+" <br>"+
    		country+" / "+City +"<br>" +
    		" valeur " + monTableau[i][2];
     
    }
    if ( i == 2 )
    {
     res = res + 
    		"<center><h3 style='color:#3d85c6';> Information 2 </h3></center>"+
    		"<p style='color:#3d85c6';> "+other+" <br>"+
    		country+" / "+City +"<br>" +
    		" valeur " + monTableau[i][2];
    }
    document.getElementById("info").innerHTML = res;
     
    }

    mon erreur :
    Uncaught TypeError: Cannot read property '2' of undefined
    ca doit être un truc simple , mais je comprends pas pourquoi , je peux pas afficher la même choses plus tard dans ma boucle.

    Merci d'avance.
    kirua99

  2. #2
    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 : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    On ne sait pas à quoi ressemble ton tableau, donc difficile de trouver la cause...

    Peut-être as-tu oublié que les indices d'un tableau commencent à 0...
    Donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for(var i=1; i<= monTableau.length; i++)
    est incorrect.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre Expert Avatar de Barsy
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    1 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 484
    Par défaut
    Comment génères-tu la variable "monTableau". Il doit lui manquer une valeur sur la deuxième colonne à la position 'i'.

  4. #4
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 141
    Par défaut
    mon tableau :

    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
    var monTableau = new Array;
    for(var i=0; i<data.getNumberOfRows(); i++){
    	//alert(data.getValue(i, 1) +" --- "+ other); 
     
    		if (  data.getValue(i, 0) == Zone
    		&& data.getValue(i, 1) == other 
    		&& data.getValue(i, 2) == country 
    		&& data.getValue(i, 3) == City 
    		&&  data.getValue(i, 4) == LabName  )		
    		{
     
    nb = nb + 1;
     
    		monTableau[nb=new Array()
     
    			for(var b=0; b<=29; b++){
     
    	monTableau[nb][b] = data.getValue(i, b);
     
    	}
    }
    Pour mettre ces valeurs mon tableau , en faisant des contrôles d'alerte , tout semble correct.

    Kirua99

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 141
    Par défaut
    Désolé pour le double post

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    for(var i=1; i<= monTableau.length; i++){
    	for(var j=0; j<= 29; j++){
    	if ( i == 1 ) 
    	{		
    		res = 
    		"<center><h3 style='color:#3d85c6';> Information </h3></center>"+
    		"<p style='color:#3d85c6';> "+other+" <br>"+
    		country+" / "+City +"<br>" +
    		" valeur " + monTableau[i][2] +
    		" valeur2 " + monTableau[i][5];
    	}
    ce code si marche correctement aucun problème


    Par contre celui la non
    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
    for(var i=1; i<= monTableau.length; i++){
    	for(var j=0; j<= 29; j++){
    		if ( i == 1 ) 
    		{		
    			res = 
    			"<center><h3 style='color:#3d85c6';> Information </h3></center>"+
    			"<p style='color:#3d85c6';> "+other+" <br>"+
    			country+" / "+City +"<br>" +
    			" valeur " + monTableau[i][2] +
    			" valeur2 " + monTableau[i][5];
    		}
    		if ( i == 2 ) 
    		{		
    			res = res +
    			"<br><center><h3 style='color:#3d85c6';> Information </h3></center>"+
    			"<p style='color:#3d85c6';> "+other+" <br>"+
    			country+" / "+City +"<br>" +
    			" valeur " + monTableau[i][2] +
    			" valeur2 " + monTableau[i][5];
    		}
    	}
    }

  6. #6
    Membre Expert Avatar de Barsy
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    1 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 484
    Par défaut
    Alors c'est que la variable "monTableau" ne contient pas 3 valeurs.
    Ou que la variable "monTableau[2]" ne contient pas 3 valeurs.

    Fait un alert sur monTableau[2] et sur monTableau[2][2] pour voir.

  7. #7
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 141
    Par défaut
    ba normalement j'affiche si dans mon tableau si le i est a 2 ou il est a 1 .

    et oui mais y a des moments ou le tableau à pour i seulement 1.

  8. #8
    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
    var monTableau = new Array manque (), monTableau[nb manque un crochet ]=new Array()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for(var i=1; i<= monTableau.length; i++){
    	for(var j=0; j<= 29; j++){
    pourquoi une boucle sur j alors que j n'est jamais utilisé.

    enfin je te renvois vers tableau-double-entree-plus-infos/

    A+JYT

  9. #9
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for(var i=1; i<= monTableau.length;i++)
    Les index commencent à zéro et se terminent à length -1 !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for(var i=0; i< monTableau.length;i++)

  10. #10
    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
    dans 90% des cas il est plus simple d'utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for (data in monTableau) {
      for (value in data) {
        alert(value);
      }
    }
    d'ailleurs je ne vois pas dans ton cas l'intérêt de passer par un tableau de tableau
    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
    var monTableau = new Array();
    for(var i=0; i<data.getNumberOfRows(); i++){
      if (  data.getValue(i, 0) == Zone
    		&& data.getValue(i, 1) == other 
    		&& data.getValue(i, 2) == country 
    		&& data.getValue(i, 3) == City 
    		&& data.getValue(i, 4) == LabName  )		
      {
      var row = { //définir un objet permet de nommer les attributs et d'être sur de sa structure
        other :    data.getValue(i, 1),
        country :  data.getValue(i, 2),
        City :     data.getValue(i, 3),
        LabName  : data.getValue(i, 4),
      }
      monTableau.push(row); //un simple push évite de trainer un indice n pour rien
    }
    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
    res = "";//en initialisant res avant la boucle on n'a plus besoin du if
    for (row in monTableau) {
      res = [
        res, 
        "<br><center><h3 style='color:#3d85c6';> Information </h3></center>",
        "<p style='color:#3d85c6';> ",
        other, // <= ICI je ne sais pas d'où sort la variable other
        " <br>",
        country,// <= ICI je ne sais pas d'où sort la variable country 
        " / ",
        City ,// <= ICI je ne sais pas d'où sort la variable City 
        "<br> valeur ",
        row.country, // <= on utilise les attributs de l'objet à la place d'indice dans un tableau
        " valeur2 ",
        row.City
      ].join() ;
    }
    le code est bien plus lisible
    A+JYT

Discussions similaires

  1. [WD10] Afficher des valeurs dans un tableau
    Par dj-julio dans le forum WinDev
    Réponses: 4
    Dernier message: 19/03/2014, 11h32
  2. Un tableau qui ne s'affiche pas
    Par stc074 dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 17/03/2011, 18h55
  3. ListView dans un TVisualFormView qui ne s'affiche pas
    Par GlobeTrotteuse dans le forum C++
    Réponses: 1
    Dernier message: 25/06/2010, 16h22
  4. Réponses: 1
    Dernier message: 13/05/2010, 16h13
  5. Réponses: 1
    Dernier message: 28/08/2009, 02h45

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