Ich habe in meine webbasierte DVD-Verwaltung eine Navigationsleiste integriert,
mit der ich meine Filmdatenbank (js-Datei) filtern kann:
Klick auf "#" -> Anzeige aller Filme, die mit einer Ziffer beginnen
Klick auf "A" -> Anzeige aller Filme, die mit dem Anfangsbuchstaben "A" beginnen
...usw...
Nun möchte ich die Erstellung dieser Navigationsleiste dynamisch gestalten, so dass
in der Leiste nur die Ziffern/Anfangsbuchstaben auftauchen, die auch wirklich in der
Datenbank existieren.
Dazu habe ich mir folgende Funktion gebastelt:
function Filterfunktion_aufbauen(Film)
{
var Anfangsbuchstabe;
var Liste_Anfangsbuchstaben = new Array();
var Zeichen;
var Suche = /^\d/g;
for (var i=0; i<Film.length; i++)
{
Anfangsbuchstabe = Film[i][1].substring(0,1);
if (Suche.test(Anfangsbuchstabe))
{
Anfangsbuchstabe = "#";
}
for (var j=0; j<Liste_Anfangsbuchstaben.length; j++)
{
if (Liste_Anfangsbuchstaben[j] == Anfangsbuchstabe)
{
j=j+1;
}
else
{
Liste_Anfangsbuchstaben.push(Anfangsbuchstabe);
}
}
}
}
Ich übergebe als Parameter das Array "Film", das folgende Struktur besitzt:
Film[0]=["DVD-Nr.", "Titel", "Inhalt", "Genre", "FSK"];
Film[1]=["DVD-Nr.", "Titel", "Inhalt", "Genre", "FSK"];
...usw...
Ich durchlaufe eine Schleife "i" von 0 bis zur Anzahl der im Array "Film"
enthaltenen Datensätze (= Zeilen) und schneide jeweils das erste Zeichen des
Titels ab. Ist das Zeichen eine Ziffer (Test über einen regulären Ausdruck),
so soll das Zeichen durch eine Raute ersetzt werden, ansonsten läuft die
Funktion weiter.
Nun durchlaufe ich eine weitere Schleife von 0 bis zur Anzahl der im Array
"Liste_Anfangsbuchstaben" bereits enthaltenen Zeichen, in der ich prüfe, ob
das aktuelle Zeichen bereits im Array enthalten ist (-> weiter mit nächstem
Zeichen) oder nicht (-> dem Array hinzufügen).
Leider muss ich feststellen, dass das Array "Liste_Anfangsbuchstaben" nach
komplettem Durchlaufen der Funktion leer ist und keine Werte enthält, ich
habe das über den "alert"-Befehl ausprobiert.
Ich habe das Array "Film" korrekt definiert, da ich - an anderer Stelle -
die enthaltenen Daten in Tabellenform ausgebe und das funktioniert einwandfrei.
Wo habe ich einen/mehrere Fehler gemacht ?
Vielen Dank für Eure Hilfe.
Gruß,
Enrico