Endung hinter URL umwandeln...
Guido
- javascript
Hallo Forum,
sitze jetzt seit zwei Stunden an einem Fehler un bekomme es nicht hin :-(
Ich übergebe in einer URL entweder eine Nummer oder einen Namen. zB
seite.htm?3 oder
seite.htm?namenachname
Nummer = id (des arrays), name = eintrag im array.
anz() --> durchläuft das array und gibt mir die Anzahl der Einträge im Array.
Wenn ich nur eine Nummer übergebe funzt alles wunderbar.
Wenn ich nun einen Namen übergebe soll im Array nach dem Namen gesucht werden und die passende 'id' zurückgegeben werden (funzt auch).
Wenn aber nun keine bzw. eine unbekannte Endung hinter der URL steht möchte ich, dass die id wieder auf 1 gesetzt wird. (if (id > anz()) id = 1;)
Bei einem Array von 7 Einträgen wird nach dem durchlaufen (wenn name nicht vorhanden) von:
if (anhang.length > 4)
{
while (anhang != Daten[id]["m_bild"])
{
id++;
}
}
die id auf 8 gesetzt. die anschl if-abfrage (if (id > anz()) id = 1;) funktioniert dann aber nicht :-/
Was kann ich dagegen tun???? ich glaube das ist nur ein blöder Denkfehler...
[...]
//Anzahl der Einträge bestimmen
function anz (){
var anz = 0;
for (i = 0; i < Daten.length; i++)
anz++;
return anz-1;
}
//Endung hinter der URL abc.htm?xxx
var anhang;
//Anhang von der URL trennen
function extAnhang(){
var URLInhalt = location.href;
var ArrayVariable = URLInhalt.split("?");
anhang = unescape(ArrayVariable[1]);
}
//Funktion ausführen
extAnhang();
//Suche Anhang im Array
function checkAnhang(){
id = 1;
//Wenn Anhang kleiner als 4 Zeichen ist gebe id zurück
if (anhang.length <= 4)
{
id = parseInt(anhang);
if (!id) id = 1;
}
//Suche id anhand des Namens und gebe id zurück
if (anhang.length > 4)
{
while (anhang != Daten[id]["m_bild"])
{
id++;
}
}
}
//Funktion ausführen
checkAnhang();
//Setze Array auf id=0 wenn Anzahl überschritten wird
if (id == 999) self.location.href = "mitglieder_listing.htm";
if (id > anz()) id = 1;
[...]
Hi,
Was kann ich dagegen tun?
eine (innere) Funktion getArrayIndex() schreiben.
ich glaube das ist nur ein blöder Denkfehler...
Ja. Deine Funktion checkAnhang() liefert beispielsweise nichts zurück, und sie basiert auf der reichlich willkürlichen Annahme, Namen hätten immer mindestens fünf Zeichen.
Cheatah
hi,
Bei einem Array von 7 Einträgen wird nach dem durchlaufen (wenn name nicht vorhanden) von: [...]
die id auf 8 gesetzt. die anschl if-abfrage (if (id > anz()) id = 1;) funktioniert dann aber nicht :-/Was kann ich dagegen tun????
Der Wert 8 kann also nur dann erreicht werden, wenn die Suche erfolglos blieb(?).
Dann frage doch einfach ab, ob id den Wert 8 hat - und ziehe daraus die richtige Schlussfolgerung.
gruß,
wahsaga
Der Wert 8 kann also nur dann erreicht werden, wenn die Suche erfolglos blieb(?).
Dann frage doch einfach ab, ob id den Wert 8 hat - und ziehe daraus die richtige Schlussfolgerung.
Das habe ich mit
if (id > anz()) id = 1;
ja getan (wobei anz() dann bspw. 7 liefert). Ging aber nicht.
Das ist ja mein Problem *grml*
hi,
Das habe ich mit
if (id > anz()) id = 1;
ja getan (wobei anz() dann bspw. 7 liefert). Ging aber nicht.
Dann kontrolliere noch mal, durch Testausgaben _an genau dieser Stelle_, die Werte von id und den Rückgabewert von anz().
Btw: Warum ermittelst du anz() zu umständlich in einer For-Schleife - warum greifst du nicht gleich auf Daten.length zurück?
gruß,
wahsaga
Habe das Problem jetzt gelöst. Weiss zwar nicht ob das so syntaktisch schön ist - aber es funzt :-)
Danke für die Tipps...
//Suche Anhang im Array
function checkAnhang(){
//Wenn Anhang kleiner als 4 Zeichen ist gebe id zurück
if (anhang.length <= 4)
{
id = parseInt(anhang);
if (!id) id = 1;
}
//Suche id anhand des Namens und gebe id zurück
if (anhang.length > 4)
{
while (id < anz() && anhang != Daten[id]["m_bild"])
{
id++;
}
if (anhang != Daten[id]["m_bild"]) id = 1;
}
}
//Funktion ausführen
checkAnhang();