我有一个二维数组:
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]
....推送没有'似乎工作。
有什么想法吗?
答案 0 :(得分:5)
检查你的拼写..
fondetcaption.length
答案 1 :(得分: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();
如果使数组本身成为那些额外属性的容器困扰你(它困扰一些人),将整个事物包装在一个对象中:
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
答案 2 :(得分:3)
你有没有尝试过:
var howmany = fondetcaption.length;
您的原始帖子有拼写错误,长度需要长度。
答案 3 :(得分:3)
尝试length
。
alert(fondetcaption.length);
答案 4 :(得分:1)
不确定是什么错,因为它在这里工作正常..
var fondetcaption = [
["fond/fond1.jpg","« aaa"],
["fond/fond2.jpg","« bbb"],
["fond/fond3.jpg","« ccc"],
["fond/fond4.jpg","« ddd"]
];
alert(fondetcaption.length);
实际上fondetcaption.lenght
实际上是从代码中复制的,因此拼写错误。
答案 5 :(得分:1)
这将返回数组的长度: fondetcaption.length
答案 6 :(得分:0)
您的代码输入错误。它应该是var howmany = fondetcaption.length
,而不是... fondetcaption.lenght
。
我建议您使用Firebug,Chrome或Safari控制台等工具。它可能非常有用,特别是对于这些问题。我复制粘贴你的代码,试过它,它就像魅力一样。当然,修复了上述拼写错误。
干杯。