2011-01-26 3 views
0

J'ai un tableau à 2 dimensions:tableau simple question

var fondetcaption = [ 
     ["fond/fond1.jpg","« aaa"],  
     ["fond/fond2.jpg","« bbb"], 
     ["fond/fond3.jpg","« ccc"], 
     ["fond/fond4.jpg","« ddd"]   
    ]; 

Ce tableau peut avoir 4, 7, 10, un certain nombre de valeur ...

Je voudrais savoir combien de paire Je valeur (il devrait revenir 4 dans ce cas)

var howmany = fondetcaption.lenght; // doesn't work ! 

et après cela ... Je vais montrer fondetcaption[0][0] (le premier arrière-plan) et après que le clic sur un bouton j'aime montrer la prochaine: [1][0] et ensuite [2][0] puis [3][0] puis [0][0] encore .... push ne semble pas fonctionner.

Une idée?

+2

longueur ou longueur? faute de frappe? – suhprano

+0

Où utilisez-vous le tableau? parce que cela fonctionne pour moi http://i.imgur.com/QIiGy.png. Votre tableau est défini dans une portée locale, ce qui pourrait être votre problème. – mhitza

Répondre

4

Comme les autres l'ont dit, il est length, pas lenght.

Mais personne ne semble avoir abordé la deuxième partie de votre question, donc:

Vous n'avez pas besoin push pour faire défiler les valeurs.Tout ce que vous avez besoin est un indice:

var fondetcaption = [ 
    ["fond/fond1.jpg","« aaa"],  
    ["fond/fond2.jpg","« bbb"], 
    ["fond/fond3.jpg","« ccc"], 
    ["fond/fond4.jpg","« ddd"]   
]; 
var fondetcaptionIndex = 0; 

// Call this when you click your button or whatever 
function getNextBackground() { 
    if (fondetcaptionIndex >= fondetcaption.length) { 
     fondetcaptionIndex = 0; 
    } 
    return fondetcaption[fondetcaptionIndex++]; 
} 

Ou, si vous le souhaitez, vous pouvez simplement mettre l'index directement sur l'objet de tableau, puisque les objets de tableau JavaScript peuvent avoir arbitraires propriétés non-élément et qui aide à garder les symboles ensemble :

var fondetcaption = [ 
    ["fond/fond1.jpg","« aaa"],  
    ["fond/fond2.jpg","« bbb"], 
    ["fond/fond3.jpg","« ccc"], 
    ["fond/fond4.jpg","« ddd"]   
]; 
fondetcaption.index = 0; 

// Call this when you click your button or whatever 
function getNextBackground() { 
    if (fondetcaption.index >= fondetcaption.length) { 
     fondetcaption.index = 0; 
    } 
    return fondetcaption[fondetcaption.index++]; 
} 

en fait, vous pouvez même faire la partie fonction du tableau:

var fondetcaption = [ 
    ["fond/fond1.jpg","« aaa"],  
    ["fond/fond2.jpg","« bbb"], 
    ["fond/fond3.jpg","« ccc"], 
    ["fond/fond4.jpg","« ddd"]   
]; 
fondetcaption.index = 0; 
fondetcaption.getNext = function() { 
    if (this.index >= this.length) { 
     this.index = 0; 
    } 
    return this[this.index++]; 
}; 

// Use 
background = fondetcaption.getNext(); 

Si faire le tableau lui-même le conteneur de ces propriétés supplémentaires vous dérange (i t dérange certaines personnes), envelopper le tout dans un objet:

var fondetcaption = (function() { 
    var index = 0, 
     values = [ 
      ["fond/fond1.jpg","« aaa"],  
      ["fond/fond2.jpg","« bbb"], 
      ["fond/fond3.jpg","« ccc"], 
      ["fond/fond4.jpg","« ddd"]   
     ]; 

    function fondetcaption_getNext() { 
     if (index >= values.length) { 
      index = 0; 
     } 
     return values[index++]; 
    } 

    return { 
     values: values, 
     getNext: fondetcaption_getNext 
    }; 
})(); 

// Sample use: 
background = fondetcaption.getNext(); 

// Original array still accessible if desired as fondetcaption.values 
+0

vous avez lu toute la question et de répondre à droite (base sur l'autre réponse) pas étonnant que vous avez 43.4k sous le capot! .. merci – menardmam

1

Je ne sais pas quel est le problème car il fonctionne très bien ici ..

var fondetcaption = [ 
     ["fond/fond1.jpg","« aaa"],  
     ["fond/fond2.jpg","« bbb"], 
     ["fond/fond3.jpg","« ccc"], 
     ["fond/fond4.jpg","« ddd"]   
]; 

alert(fondetcaption.length); 

http://jsfiddle.net/tLPwp/

Peut-être fondetcaption.lenght est en fait copié à partir du code, et thusly mal orthographié.

3

Avez-vous essayé:

var howmany = fondetcaption.length; 

Votre message original a une faute d'orthographe, longueur doit être longueur.

3

Essayez length.

alert(fondetcaption.length); 
1

Cela ramène la longueur du tableau: fondetcaption.length

5

vérifier l'orthographe ..

fondetcaption.length 
0

Vous avez une faute de frappe dans le code. Il devrait être var howmany = fondetcaption.length, et non ... fondetcaption.lenght.

Je vous suggère d'utiliser des outils comme Firebug, Chrome ou la console de Safari. Cela peut être très utile, surtout avec les problèmes comme ceux-ci. J'ai copié-collé votre code, essayé, et ça fonctionne comme du charme. Avec la faute de frappe mentionnée, bien sûr.

Cheers.

+0

** Cinq ** personnes précédentes ont déjà donné cette réponse (bien six, mais vous ne pouvez pas voir celui qui a réalisé qu'ils étaient en train de dupliquer et supprimé). Pourquoi en ajouter un autre? Le commentaire de débogage est valide, mais c'est un commentaire, pas une réponse. –