EDIT: я не хочу пропустить индекс 1. Я хочу пропустить текущий элемент (нажав). Кроме того, см. Ниже более подробное описание кода. Вы увидите, что у меня есть класс CatListItem
и пять экземпляров этого класса в массиве allCatListItems
.JavaScript: Как пропустить текущий элемент в массиве во время цикла for? (continue?)
Вот какой-то контекст для вопроса: У меня есть список кошек. Когда я нажимаю на имя кота (элемент списка), я хочу, чтобы изображение кота и другая информация были добавлены на страницу (это было опущено). Когда кошку нажимают, я также хочу, чтобы любой другой кот, который отображается, был скрыт (таким образом, на экране есть только одна кошка).
Я пытаюсь выполнить это с помощью цикла for
, но, очевидно, если он выполняет итерацию по каждому элементу массива, тогда, когда я нажимаю элемент, кошка, нажатая, также будет скрыта.
Я хочу пропустить текущий элемент в массиве и выполнить только код на других элементах. Используя continue, я знаю, что могу пропустить определенный элемент (пункт 1 в приведенном ниже примере). Это запустит мой код для каждого элемента массива, за исключением того, что в индексе один. Но как я могу сделать это continue
динамическим? Смысл ... как я могу скрыть всех кошек, кроме тех, которые в настоящее время нажаты?
Вот цикл, который скачет индекс 1:
CatListItem.prototype.hideCats = function() {
allCatListItems.forEach(function(cat) {
cat.a.addEventListener('click', function() {
for (var i = 0; i < allCatListItems.length; i++) {
if (i === 1) {
continue;
}
allCatListItems[i].img.className = 'hide';
};
});
});
}
var allCatListItems = [
catListItem1 = new CatListItem('El', 'images/el.jpg', 'el'),
catListItem2 = new CatListItem('Widdle Baby', 'images/widdle-baby.jpg', 'widdle-baby'),
catListItem3 = new CatListItem('Mama', 'images/mama.jpg', 'mama'),
catListItem4 = new CatListItem('Legion', 'images/legion.jpg', 'legion'),
catListItem5 = new CatListItem('Boy', 'images/boy.jpg', 'boy'),
];
EDIT: Вот скрипку. JSFIDDLE Нажмите на названия, чтобы увидеть функциональность без функции hideCats. Тогда раскомментируйте, где он говорит, чтобы увидеть мою проблему.
Я начинаю думать, что, возможно, цикл for не самый лучший вариант?
Можете ли вы показать обработчик события клика, а также –
получить индекс щелкнутого элемента при щелчке, а затем (i === index) продолжить; –
Вам нужно идентифицировать и пропустить необходимый элемент. Как это сделать будет зависеть от вашего фактического кода, который вы не предоставили, но, скорее всего, это будет сравнение между этим и текущим элементом в списке. –