Hallo Struppi,
Menschenskinder, genau, "push" ist die Lösung... :-))
Jetzt bekomme ich zumindest keine Fehlermeldung mehr, das ist schon was.
So, jetzt habe ich nur noch das Problem zu lösen, dass ich die Filterung noch nicht wie gewünscht hinbekomme.
Ich habe die Möglichkeit vorgesehen, meine Sammlung anhand maximal dreier Kriterien filtern zu lassen:
-anhand des Anfangsbuchstaben der Titel
-anhand des Genres
-anhand der Altersfreigabe
Von der Logik müsste es wie folgt umgesetzt werden:
Prüfung 1: Kriterium für Anfangsbuchstaben gesetzt ?
Ja:
-Array "Temp" komplett durchlaufen und bei Übereinstimmung in Array "Temp_Temp" überspielen
-Array "Temp_Temp" in's Array Temp zurückspielen und Länge "Temp" um letztes Element + 1 bis
zum Ende ( = Länge "Temp_Temp") reduzieren
Nein: Weiter mit Prüfung 2
Prüfung 2: Kriterium für Genre gesetzt ?
Ja:
-Array "Temp" komplett durchlaufen und bei Übereinstimmung in Array "Temp_Temp" überspielen
-Array "Temp_Temp" in's Array Temp zurückspielen und Länge "Temp" um letztes Element + 1 bis
zum Ende ( = Länge "Temp_Temp") reduzieren
Nein:
Weiter mit Prüfung 3
Prüfung 3: Kriterium für Altersfreigabe gesetzt ?
Ja:
-Array "Temp" komplett durchlaufen und bei Übereinstimmung in Array "Temp_Temp" überspielen
-Array "Temp_Temp" in's Array Temp zurückspielen und Länge "Temp" um letztes Element + 1 bis
zum Ende ( = Länge "Temp_Temp") reduzieren
Nein: keine Aktion
Meine Funktion sieht nun wie folgt aus (für alle drei Filtermöglichkeiten):
function Filtern(Temp)
{
var Kriterium_Anfangsbuchstabe = window.document.getElementById ("Anfangsbuchstabe").value;
var Kriterium_Genre = window.document.getElementById ("Genre").value;
var Kriterium_FSK = window.document.getElementById ("FSK").value;
if (Kriterium_Anfangsbuchstabe != "")
{
var Temp_Temp = new Array();
for (var i = 0; i < Temp.length; i++)
{
Anfangsbuchstabe = Temp[i]["Titel"].substring (0,1);
if (Anfangsbuchstabe == Kriterium_Anfangsbuchstabe)
{
Temp_Temp.push({
Nr: Temp[i]["Nr"],
Titel: Temp[i]["Titel"],
Inhalt: Temp[i]["Inhalt"],
Genre: Temp[i]["Genre"],
FSK: Temp[i]["FSK"],
});
}
}
for (var i = 0; i < Temp_Temp.length; i++)
{
Temp.push({
Nr: Temp_Temp[i]["Nr"],
Titel: Temp_Temp[i]["Titel"],
Inhalt: Temp_Temp[i]["Inhalt"],
Genre: Temp_Temp[i]["Genre"],
FSK: Temp_Temp[i]["FSK"],
});
}
Temp.splice (0, Temp_Temp.length);
}
if (Kriterium_Genre != "")
{
var Temp_Temp = new Array();
for (var i = 0; i < Temp.length; i++)
{
if (Temp[i]["Genre"] == Kriterium_Genre)
{
Temp_Temp.push({
Nr: Temp[i]["Nr"],
Titel: Temp[i]["Titel"],
Inhalt: Temp[i]["Inhalt"],
Genre: Temp[i]["Genre"],
FSK: Temp[i]["FSK"],
});
}
}
for (var i = 0; i < Temp_Temp.length; i++)
{
Temp.push({
Nr: Temp_Temp[i]["Nr"],
Titel: Temp_Temp[i]["Titel"],
Inhalt: Temp_Temp[i]["Inhalt"],
Genre: Temp_Temp[i]["Genre"],
FSK: Temp_Temp[i]["FSK"],
});
}
Temp.splice (0, Temp_Temp.length);
}
if (Kriterium_FSK != "")
{
var Temp_Temp = new Array();
for (var i = 0; i < Temp.length; i++)
{
if (Temp[i]["FSK"] == Kriterium_FSK)
{
Temp_Temp.push({
Nr: Temp[i]["Nr"],
Titel: Temp[i]["Titel"],
Inhalt: Temp[i]["Inhalt"],
Genre: Temp[i]["Genre"],
FSK: Temp[i]["FSK"],
});
}
}
for (var i = 0; i < Temp_Temp.length; i++)
{
Temp.push({
Nr: Temp_Temp[i]["Nr"],
Titel: Temp_Temp[i]["Titel"],
Inhalt: Temp_Temp[i]["Inhalt"],
Genre: Temp_Temp[i]["Genre"],
FSK: Temp_Temp[i]["FSK"],
});
}
Temp.splice (0, Temp_Temp.length);
}
Liste_ausgeben(Temp);
}
Muß ich beim "slice"-Befehl bei der Anwendung auf mein assoziatives Array anders vorgehen?
Viele Grüße
Enrico