2010-11-27 12 views
1

Je suis en train de faire un diaporama à courir sur ma page qui puise dans plusieurs groupes (catégories) d'images qui sont incluses dans le diaporama si une case à cocher particulière (un pour chaque catégorie) sur la page est cochée. J'ai codé avec succès avec deux catégories, mais j'essaie de rendre le code plus facilement personnalisable. J'ai eu la brillante idée d'utiliser des objets personnalisés au lieu de tableaux. Je pense que cette approche me rapprocherait probablement de mon objectif final d'utiliser un document XML dans le processus.tableau d'objets contenant des tableaux possible?

Je suis assez nouveau pour la programmation orientée objet, en particulier avec le javascript. Je l'ai créé avec succès une déclaration d'objets pour une utilisation dans une page diaporama avec le code suivant:

function picsobj(description,length,indivpicarray){ 
    this.description=description; 
    this.length=length; 
    this.indivpicarray=indivpicarray; 
} 

et ailleurs le code suivant pour faire un tableau d'objets picsobj

for(i=0;i<2;i++){ //change i< integer to number of picture arrays 
    picarrays[i]=new picsobj();} 

le plan est d'utiliser la propriété description des sous-titres ou pour décrire des éléments sur la page, utiliser la propriété de longueur pour aider à déterminer le nombre d'images à faire défiler et à utiliser (voici où ma question est ...) la propriété d'objet appelé indivpicarray pour stocker une MATRICE des noms d'image (la longueur du tableau changerait de picsobj à picsobj). Je ne sais pas si c'est possible, et si c'est le cas, j'ai besoin d'aide pour la syntaxe. Merci d'avoir lu ma question. encore une fois, désolé s'il y a des mots utilisés à mauvais escient, je suis un peu d'un n00b et ont à peu près appris par « source de vue, copier, coller, modifier »

+0

J'ai enlevé vos commençant excuses pour être un « n00b » parce que c'est une question bien rédigée et valide. :) –

Répondre

3

et utiliser la propriété d'objet appelé indivpicarray pour stocker un tableau de noms d'image.

Ceci est parfaitement bien. La technique des objets ayant des propriétés qui sont des tableaux est assez commune. Les tableaux sont traités comme n'importe quelle autre variable.Il suffit de l'ajouter à votre constructeur:

function picsobj(description,length,indivpicarray){ 
    this.description=description; 
    this.length=length; 
    this.indivpicarray=indivpicarray; 
} 

imageNameArray = [ "image1.png", "image2.gif", "image3.jpg" ]; 
var myPicsObj = new picsobj("this is the description", 3, imageNameArray); 

see here if you're not sure what a constructor is

0

javascript tout est possible:

this.description = ["a","b","c"]; 

Vous auriez un tableau de 3 éléments étant des chaînes. Dans le monde réel, vous souhaitez définir comme this.description = []; faire quelque chose comme:

picarrays[i].description.push("a"); 
picarrays[i].description.push("b"); 
picarrays[i].description.push("c"); 

vous donnant effectivement le même tableau et vous pouvez boucle à travers .description pour obtenir toutes les chaînes du tableau. Vous pourriez également ne pas avoir besoin de longueur puisque description.length vous donnerait le nombre d'éléments dans la description.

0

Oui, cela est possible. Vous pouvez, par exemple, faire de cette façon si vous connaissez déjà les valeurs lors de sa programmation:

var picarrays=[{description:"bla","length":1234,"indivpicarray":["a","b","c"]}, 
       {description:"blah","length":145,"indivpicarray":["a","c","g"]}]; 

Cela vous donne un tableau d'objets de tableaux.

0

Il y a un objet appelé Array en JavaScript, ce qui devrait faire exactement ce dont vous avez besoin. Voir des exemples sur http://www.w3schools.com/JS/js_obj_array.asp, ou tout simplement google "javascript Array"

Espoir qui aide

+0

L'affiche le sait déjà. Il cherche un moyen d'insérer/pousser des objets définis par l'utilisateur dans le tableau plutôt que les types simples intégrés. – Philar

0
/* The function constructor of your objects usually use a capitalized names 
* */ 
var Picsobj = function(description,indivpicarray){ 
    this.description=description; 
    this.indivpicarray=indivpicarray; 
}; 
/* Is better convert length to a method instead a property passed to the constructor. */ 
/* The methods are attached to the prototype propertie of the constructor. `this` refers to 
* the actual object where the method is called. 
* */ 
Picsobj.prototype.getLength = function() { 
    if(typeof(this.indivpicarray) != 'object') 
    return 0; 
    return this.indivpicarray.length; 
}; 


/* Example */ 
var pic = new Picsobj('Description of pic', ['pic1.jpg','pic2.jpg']); 
var anotherPic = new Picsobj('Description of anotherPic', ['anotherPic1.jpg','anotherPic2.jpg']); 
console.log(pic.getLength()); 
console.log(anotherPic.getLength());