题
我有一个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);
也许 fondetcaption.lenght
实际上是从代码复制的,因此拼写错误。
这返回阵列的长度:fondetcaption.length
您有代码中的错别字。它应该是 var howmany = fondetcaption.length
, , 并不是 ... fondetcaption.lenght
.
我建议您使用Firebug,Chrome's或Safari的控制台等工具。这可能非常有帮助,尤其是在此类问题上。我复制了您的代码,尝试了它,它的工作就像魅力一样。当然,上述错别字已固定。
干杯。
不隶属于 StackOverflow