EDIT: Ich möchte den Index 1 nicht überspringen. Ich möchte das aktuelle (angeklickte) Element überspringen. Siehe auch unten für mehr Code wie angefordert. Sie werden sehen, dass ich eine Klasse CatListItem
und fünf Instanzen dieser Klasse in einem Array allCatListItems
habe.JavaScript: Wie überspringe das aktuelle Element im Array während einer for-Schleife? (weiter?)
Hier ist ein Zusammenhang für die Frage: Ich habe eine Liste von Katzen. Wenn ich auf den Namen einer Katze (Listenelement) klicke, möchte ich, dass das Bild und die anderen Informationen der Katze an die Seite angehängt werden. Wenn eine Katze angeklickt wird, möchte ich auch, dass eine andere Katze, die angezeigt wird, ausgeblendet wird (auf diese Weise gibt es immer nur eine Katze auf dem Bildschirm).
Ich versuche, dies mit einer for
Schleife zu erreichen, aber offensichtlich, wenn es über jedes Element im Array iteriert, wenn ich dann auf ein Element klicke, wird die angeklickte Katze ebenfalls ausgeblendet.
Ich möchte das aktuelle Element im Array überspringen und nur den Code für die anderen Elemente ausführen. Wenn ich fortfahre, weiß ich, dass ich einen bestimmten Gegenstand überspringen kann (Artikel 1 im folgenden Beispiel). Dadurch wird mein Code für jedes Element im Array ausgeführt, mit Ausnahme von Index eins. Aber wie kann ich das continue
dynamisch machen? Bedeutung ... wie kann ich alle Katzen verstecken, außer die, die gerade angeklickt wird?
Hier ist die Schleife, die Index 1 überspringt:
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: Hier ist eine Geige. JSFIDDLE Klicken Sie auf die Namen, um die Funktionalität ohne die Funktion hideCats anzuzeigen. Dann kommentieren Sie, wo es heißt, um mein Problem zu sehen.
Ich fange an zu denken, dass vielleicht eine For-Schleife nicht die beste Option ist?
Können Sie Ihren Click-Event-Handler auch zeigen –
erhalten Sie den Artikel angeklickt Index auf klicken Sie dann, wenn (i === Index) fortsetzen; –
Sie müssen das gewünschte Element identifizieren und überspringen. Wie es geht, hängt von Ihrem tatsächlichen Code ab, den Sie nicht angegeben haben, aber es wird wahrscheinlich ein Vergleich zwischen 'this 'und dem aktuellen Element in der Liste sein. –