Вопрос
У меня есть 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;
Ваш исходный пост имеет ошибку орфографии, длина должно быть длина.
Пытаться 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's, Chrome's или Safari's Console. Это может быть очень полезно, особенно с такими проблемами. Я копировал ваш код, попробовал его, и он работает как очарование. С упомянутой опечатки, конечно, конечно.
Ваше здоровье.