2011-01-26 51 views
0

我有一个2维数组:简单阵列问题

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

即阵列可以具有4,7,10,任何数量的在...

值I想知道有多少对值我有(它应该在这种情况下,返回4)

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

而在这之后......我会告诉fondetcaption[0][0](第一背景) ,之后在点击一个按钮,我想展现了下:然后[2][0]然后[3][0]然后再[0][0] .... push似乎不工作。

有什么想法?

+2

长度还是长度?错字? – suhprano 2011-01-26 22:05:04

+0

你在哪里使用阵列?因为它适用于我http://i.imgur.com/QIiGy.png。您的数组在本地范围内定义,因此可能是您的问题。 – mhitza 2011-01-26 22:07:06

回答

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 2011-01-26 22:18:08

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; 

你原来的职位有拼写错误,lenght必须长度

3

尝试length

alert(fondetcaption.length); 
1

这将返回数组的长度: fondetcaption.length

0

你有一个错字代码。它应该是var howmany = fondetcaption.length,而不是... fondetcaption.lenght

我建议你使用类似Firebug的Chrome浏览器的,或Safari浏览器的控制台工具。这可能会非常有帮助,特别是对于像这样的问题。我复制粘贴你的代码,尝试它,它的作用就像魅力。当然,提到的错字是固定的。

干杯。