我有一个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] 再次....推动似乎不起作用。

任何想法?

有帮助吗?

解决方案

正如其他人所说的那样,是 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();

如果使数组本身成为那些额外属性的容器困扰您(某些人困扰),请将整个内容包裹在一个对象中:

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

其他提示

检查你的拼写..

fondetcaption.length

你试过了吗:

var howmany = fondetcaption.length;

您的原始帖子有拼写错误, lenght 需要是 长度.

尝试 length.

alert(fondetcaption.length);

不确定怎么了,因为在这里工作正常。

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 实际上是从代码复制的,因此拼写错误。

这返回阵列的长度:fondetcaption.length

您有代码中的错别字。它应该是 var howmany = fondetcaption.length, , 并不是 ... fondetcaption.lenght.

我建议您使用Firebug,Chrome's或Safari的控制台等工具。这可能非常有帮助,尤其是在此类问题上。我复制了您的代码,尝试了它,它的工作就像魅力一样。当然,上述错别字已固定。

干杯。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top