Hallo,
bezüglich der Erzeugung der Menüstruktur unseres Webshops bin ich nun auf JavaScript umgeschwenkt, um in der endgültigen Fassung unnötige Reloads der Seite zu vermeiden.
Hierbei habe ich folgende (gekürzte) Struktur:
var Hauptmenue = ["Warenkorb", "Wir über uns", "Rüstzeug", "Waffen", "Sonderangebote", "Anfrage"],
WirUeberUns = ["Neuigkeiten", "Geschichte", ...],
Ruestzeug = ["Für den Kopf", "Für den Oberkörper", ...],
Waffen = ["Speere", "Hämmer", "Äxte", ...],
Suche = ["Suche", "Detailsuche", "Hilfe", "Sitemap"];
Wie ersichtlich ist/sein sollte, gibt es nicht zu allen Hauptmenüpunkten auch ein Untermenü.
Um nun zu testen, ob ein Hauptmenüpunkt ein Untermenü enthält, nehme ich folgenden Code:
function istArray (Wert)
{
Wert = TextBereinigen (Wert);
return (typeof Wert != "undefined") ? (typeof (Wert.length) == "undefined") ? false : true : false;
}
function TextBereinigen (Wert)
{
Wert = Wert.replace(/Ä/g, "Ae").replace(/ä/g, "ae").replace(/Ö/g, "Oe").replace(/ö/g, "oe").replace(/Ü/g, "Ue").replace(/ü/g, "ue").replace(/ß/g, "ss");
if (Wert.indexOf(" ") != -1)
{
var Woerter = Wert.split(" "),
w = Woerter.length,
x = 0,
Wert = "";
for (; x < w; x++)
{
Woerter[x] = Woerter[x].substr(0, 1).toUpperCase() + Woerter[x].substr(1);
Wert += Woerter[x];
}
}
return Wert.replace(/ /g, "");
}
Der Test, ob eine so ermittelte Variable tatsächlich ein Array ist, erfolgt über dann über den Aufruf if (istArray (Hauptmenue[x]))
, wobei ich "x" aus einer for-Schleife erhalte.
Leider ist es aber so, dass ich hier immer eine positive Rückmeldung bekomme und beispielsweise auch der Hauptmenüpunkt "Sonderangebote" ein Untermenü enthält, obwohl das gar nicht der Fall ist.
Ich hatte zunächst vermutet, dass mir die Funktion TextBereinigen
ein Array in einen String umwandeln könnte, und bin mir auch jetzt noch nicht sicher, ob das nicht der Fall ist, aber auch wenn ich den Aufruf auskommentiere, bleibt das Ergebnis unverändert.
Was habe ich falsch gemacht?
Danke für eure Hilfe und Gruß,
Enrico