2011-01-26 4 views
0

У меня есть 2 размера массив:простого массив вопрос

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

Этот массив может иметь 4, 7, 10, любое количество стоимости в ...

Я хотел бы знать, как много пары значение у меня есть (она должна возвращать 4 в данном случае)

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

и после этого ... я покажу fondetcaption[0][0] (первый фон) и после этого при щелчке на кнопке я хотел показать следующее:[1][0], а затем затем [2][0], а затем [3][0], а затем [0][0] снова .... нажатие не работает.

Любая идея?

+2

длина или длина? опечатка? – suhprano

+0

Где вы используете массив? потому что он работает для меня http://i.imgur.com/QIiGy.png. Ваш массив определен в локальной области, так что это может быть вашей проблемой. – mhitza

ответ

4

Как уже говорили другие, это length, не lenght.

Но никто, кажется, не адресованный вторую часть вашего вопроса, так:

Вам не нужно push, чтобы пролистать значения.Все, что вам нужно, это индекс:

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++]; 
} 

Или, если вы хотите, вы можете просто поместить указатель непосредственно на объект массива, так как объекты JavaScript массива могут иметь произвольные свойства без элементов, и это помогает держать символы вместе :

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++]; 
} 

В самом деле, вы можете даже сделать функцию часть массива:

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(); 

Если сделать сам контейнер из этих дополнительных свойств массива вас беспокоит (я t беспокоит некоторых людей), оберните все это в объект:

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

вы читаете весь вопрос и ответ прямо (основание на другой ответ) неудивительно, что у вас есть 43.4k под капотом! .. спасибо – menardmam

1

Не уверен, что это неправильно, так как она отлично работает здесь ..

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/

Возможно fondetcaption.lenght на самом деле скопирован из кода, и константы выглядит написано неправильно.

3

ли вы попробовать:

var howmany = fondetcaption.length; 

Вашего оригинальный пост имеет орфографическую ошибку, длиной должна быть длиной.

3

Пробег: length.

alert(fondetcaption.length); 
0

У вас есть опечатка в коде. Он должен быть var howmany = fondetcaption.length, а не ... fondetcaption.lenght.

Я предлагаю вам использовать такие инструменты, как Firebug, Chrome или Safari's Console. Это может быть очень полезно, особенно с такими проблемами. Я скопировал ваш код, попробовал его, и он работает как шарм. Разумеется, с указанной опечаткой.

Cheers.

+0

** Пять ** предыдущие люди уже дали этот ответ (ну шесть, но вы не можете видеть тот, кто понял, что они дублируют и удаляют). Зачем добавить еще один? Комментарий отладки действителен, но это комментарий, а не ответ. –