Inserer Objet dans un tableau.

Résolu
Bonjour à tous,

Je vous explique mon problème, je souhaite créer différent objets puis, les stocker dans un tableau mais quand j'essaie de récupérer la variable dans le tableau, elle est considéré comme indéfinie :

Console.js :

function Objet (i, n, u, t)
{
this.id = i,
this.nom = n,
this.url = u,
this.type = t;
}

sprite.js

objets = new Array();
objets[0] = new Objet('1, MUR, image/mur.jpg, 0');
objets[1] = new Objet('2, CAISSE, image/caisse.jpg, 0');
objets[2] = new Objet('3, OBJECTIF, image/obj.jpg, 0');

interface.js

obj_nom = objets[o].nom;
obj_url = 'url('+objets[o].url+')';
alert(obj_nom+'-'+obj_url);

Voila, quand j'exécute le code, alert me renvoie undefinied-undefinied
Tout les fichiers sont bien inclu et il ne me semble pas y avoir d'erreurs

Je pensais que ça venais du tableau alors j'ai essayé :

objetst = new Objet('1, MUR, image/mur.jpg, 0');

obj_nom = objetst.nom;
obj_url = 'url('+objetst.url+')';
alert(obj_nom+'-'+obj_url);

Sans plus de résultat, je pense qu'il y a quelque chose qui doit clocher au niveau de la fonction, mais je ne vois pas quoi. Est-ce possible déjà ?

Je vous remercie de votre aide !!!!
Cordialement
Exlieur



N'oubliez pas de marquez votre post comme résolut lorsque vous avez eu les réponses à vos questions...
Au royaume des aveugles, les borgnes sont rois.

3 réponses

  1. Bonjour

    Tu définis ta fonction Objet avec 4 paramètres, mais tu en passes un seul lors du 'new'
    En effet, quand tu écris '1, MUR, image/mur.jpg, 0', tu n'écris pas 4 paramètres, mais une seule chaîne de caractères (à cause des apostrophes)
    Tu aurais dû écrire
    objets[0] = new Objet(1, 'MUR', 'image/mur.jpg', 0);
    1
    1. Effectivement... Cela fonctionne bien mieux !
      Merci de votre aide !

      Je me casser la téte a trouver une autre solution avec les tableaux multi dimension x)
      0
    2. De rien :)
      0
  2. obj_url = 'url('+objets[o].url+')'; <--- Attention, tu as mis un o (lettre) à la place d'un 0 (chiffre) !!

    C'est pareil sur plusieurs de tes lignes...
    0
    1. Le code n'est pas complet :

      for (o = 0; o < objets.length; o++)
      {
      obj_nom = objets[o].nom;
      obj_url = 'url('+objets[o].url+')';

      switch (table[i][j])
      {
      case obj_nom:
      document.getElementById(id).style.backgroundImage = obj_url;
      break;
      }
      }

      Voila la raison du "o".
      j'ai fait un alert objets.length qui me retourne bien le nombre.
      j'ai aussi fait un alert objets[0] qui me retourne bien Object
      MAIS : alert objets[0].nom me retourne undefinied
      0