質問

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.

しかし、誰もあなたの質問の第2部に対処していないようです。

必要はありません 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、Safariのコンソールなどのツールを使用することをお勧めします。特にこのような問題では、非常に役立ちます。私はあなたのコードをコピーして試してみました、そしてそれはチャームのように機能します。もちろん、言及されたタイプミスが修正されました。

乾杯。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top