Javascript 简单数组问题
我有一个二维数组:Javascript 简单数组问题,javascript,arrays,Javascript,Arrays,我有一个二维数组: var fondetcaption = [ ["fond/fond1.jpg","« aaa"], ["fond/fond2.jpg","« bbb"], ["fond/fond3.jpg","« ccc"], ["fond/fond4.jpg","« ddd"] ]; 该数组可以有4,7,10,任意数量的值 我想知道我有多少对值,在这种情况下它应该返回4 var howma
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]。。。。推似乎不起作用
有什么想法吗?我不确定出了什么问题,因为它在这里很好用
var fondetcaption = [
["fond/fond1.jpg","« aaa"],
["fond/fond2.jpg","« bbb"],
["fond/fond3.jpg","« ccc"],
["fond/fond4.jpg","« ddd"]
];
alert(fondetcaption.length);
可能fondetcaption.lenght实际上是从代码中复制的,因此拼写错误。您是否尝试过:
var howmany = fondetcaption.length;
您的原始帖子有拼写错误,lenght必须是length。试试length
这将返回数组的长度: fondetcaption.length检查拼写
fondetcaption.length
正如其他人所说,这是长度,而不是长度 但似乎没有人回答你问题的第二部分,因此: 您不需要按循环遍历这些值。您只需要一个索引:
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
你的密码有误。它应该是var howmany=fondetcaption.length,而不是。。。FondettCaption.Lengh 我建议您使用Firebug、Chrome或Safari控制台等工具。这可能非常有帮助,尤其是对于这样的问题。我复制粘贴了你的代码,试过了,效果很好。当然,上面提到的打字错误已经纠正了
干杯。您在哪里使用阵列?因为它对我有用。你的数组是在本地范围内定义的,所以这可能是你的问题。之前的五个人已经给出了这个答案,但你看不到那个意识到他们在复制和删除的人。为什么还要加一个呢?调试注释是有效的,但它是一个注释,而不是一个答案。您在其他答案的基础上正确地阅读了整个问题和答案,难怪您有43.4k!。。谢谢
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