URL aus JS-Array zusammenbauen

TIMS_Ralf

Erfahrenes Mitglied
Moin's!
habe eine recht komplexe WEB-site für die ich die Links per JS zusammenbauen und den Link zur URL mit JS auslösen muß ( will ), tlw. mit Parameter:

Grundlagen:
- Habe ein JS-Array mit den Links angelegt
- Habe eine JS-function, die den Link am Ende mit window.location.href = Link ;
- Habe HTML, das per ONCLICK-Event die JS-function auslöst

Problem:
Clicke ich die function im HTML an, baut die functiopn den Link nicht richtig zusammen:
Der Pfad der URL passt - Die WEB-Seite am Ende des Pfades aber nicht - da erscheint "undefined".
OK... sieht erstmal nach nem Fehler im Daten-Array aus...

Aber:
Gebe ich in der function vor dem Link eine "alert( Link )" aus, gibt er mir
1. den richtigen = kompletten Pfad incl. WEB-Seite.htm als "alert( Link )" aus
2. linkt dann aber mit window.location.href = Link wieder auf "undefined"
3. - x. Das gleiche Spiel in vertauschten Varianten, als "alert( Link )" oder als "console.log( Link );"
4. ... und wen ich "window.location.href = Link ;" ohne alert / console.log gleich ausführe, fehlt wieder die letzte Variable - wieder "undefined"
5. Gleiches auch , wenn ich die Daten aus dem Daten-Array Link in eine Variable LinkTo zwichsen speichere und dann mit "window.location.href = LinkTo ;" auslöse

Bei "alert( Link )" passt alles, bei gleich folgendem "window.location.href = Link ;" fehlt am Ende die Variabek für die WEB-site.htm,
Ist de gleiche Variable.... !?

Also:
Im HTML löse ich z.B. die Funktion "LNv1(1,1,1001060,0)" mit ONCLICK aus ( LinkNavigation1(paramter mit Daten aus Daten-Array ))
HTML:
<!-- ... <UL ... -->
     <LI CLASS="Nv1M2 cTIMS" ONCLICK="LNv1(1,1,1001060,0)">
        <DIV CLASS="Nv1Dv taC">Unsere Preise </DIV>
    </LI>
<!-- ... </UL> ... -->

Die JS-Funktion - mal stark "abgespeckt" ;-) :
Javascript:
function LNv1(pMode, pyNr, pyNm, pLPrm)
{
 var
 //  0        1          2              3             4           5          6        7        8          9         10    ArrayNr für pLPrm=[....]
 ThisObj=0, LPrm="", pAddPthFile="", pNewCssC="", pySetCssC="", WnTrg="", yWnPrm="", LPrm="", Rtrn="", PlySnd="", yTglCssC="", LinkTo='',
 fromScrpt = "LNv1",
 scrpt = "TIMS.pg LNv(pMode="+pMode+",pyNr="+pyNr+", pyNm="+pyNm+", pLPrm="+pLPrm+" [p"+arguments.length+"])"+fromScrpt; // Endvar=true;
 // alert(scrpt + "\n\n _yLTo["+pyNr+"]["+pyNm+"] = " +  _yLTo[pyNr][pyNm]);
 // alert("_yLTo["+pyNr+"]["+pyNm+"] = " + _yLTo[pyNr][pyNm]);

 // alert(scrpt + '\n\n' + _yLTo[pyNr][pyNm])
 // console.log(_yLTo[pyNr][pyNm]);
 // alert(_yLTo[pyNr][pyNm]);
 // window.location.href = _yLTo[pyNr][pyNm];
 
 LinkTo = _yLTo[pyNr][pyNm];
 // alert(LinkTo);
 // console.log(LinkTo);
 alert(LinkTo);

 window.location.href = LinkTo;
}

Und nun das Daten-Array - erstmal massiv abgespeckt:
Javascript:
// Array LinkNavigat1on - LNv1(1,1,1001000,0)

_yLTo = new Array();
 _yLTo[0] = new Object();
 _yLTo[0][0] = 'https://de.web-domain.de/';

 _yLTo[0][1] = new Array();
 _yLTo[0][1][1] = _yLTo[0][0] + '' + '' + 'pg/';

 // 1.Ordner Level 1 ab /pg/
 _yLTo[0][2] = new Array();
 _yLTo[0][2][0]  = _yLTo[0][1][1];
 _yLTo[0][2][1]  = _yLTo[0][1][1] + "ordner_1/"

// ##### HTML-Seiten , max. 3 Ordner-Level: https://de.web-domain.de/pg/ordner_1/'

 _yLTo[1] = new Object();
 _yLTo[1][1] = _yLTo[0][1][1] + 'index.htm';

 _yLTo[1][1001000] = _yLTo[0][2][1] + 'index.htm';         // https://de.web-domain.de/pg/ordner_1/index.htm
 _yLTo[1][1001020] = _yLTo[0][2][1] + 'seite_1.htm';       // https://de.web-domain.de/pg/ordner_1/seite_1.htm
 _yLTo[1][1001030] = _yLTo[0][2][1] + 'seite_2.htm';       // https://de.web-domain.de/pg/ordner_1/seite_2.htm
 _yLTo[1][1001040] = _yLTo[0][2][1] + 'seite_3.htm';       // https://de.web-domain.de/pg/ordner_1/seite_3.htm
 _yLTo[1][1001050] = _yLTo[0][2][1] + 'seite_4.htm';       // https://de.web-domain.de/pg/ordner_1/seite_4.htm


Ich seh' wahrscheinlich den Wald vor lauter Bäumen nicht mehr.... keine Ahnung; mir platzt gleich der Schädel...
Ich schau heute nochmal rein.... wenn ich jetzt aber nich endlich zum Essen gehe, krieg ich Haue....;-)

Euch erstmal vielen Dank vorab!
 
Zuletzt bearbeitet:
Was ist denn "TIMS.pg" und die Funktion "LNv"? Gibt es eine Doku dafür?
Wenn ich dies lese:
4. ... und wen ich "window.location.href = Link ;" ohne alert / console.log gleich ausführe, fehlt wieder die letzte Variable - wieder "undefined"
und dies:
Bei "alert( Link )" passt alles, bei gleich folgendem "window.location.href = Link ;" fehlt am Ende die Variabek für die WEB-site.htm,
drängt sich die Vermutung auf, dass da irgend welche asynchronen Vorgänge im Spiel sind.
 
Javascript:
_yLTo = new Array();
 _yLTo[0] = new Object();
 _yLTo[0][0] = 'https://de.web-domain.de/';

 _yLTo[0][1] = new Array();
 _yLTo[0][1][1] = _yLTo[0][0] + '' + '' + 'pg/';  //HIER --> hätte _yLTo[0][1][0] erwartet

 // 1.Ordner Level 1 ab /pg/
 _yLTo[0][2] = new Array();
 _yLTo[0][2][0]  = _yLTo[0][1][1];
 _yLTo[0][2][1]  = _yLTo[0][1][1] + "ordner_1/"

// ##### HTML-Seiten , max. 3 Ordner-Level: https://de.web-domain.de/pg/ordner_1/'

 _yLTo[1] = new Object();
 _yLTo[1][1] = _yLTo[0][1][1] + 'index.htm';
Ich finde die Array-Indexierung skurril
 
Hallo Ihr beiden + vielen Dank erstmal!

TIMS.pg könnt Ihr ignorieren - das hätte auch noch rausnhemen können. Die Funtion LNv1 ist mit anderen Funktionen "vernetzt". Hier die Funktion, wie sie minimalistisch sein sollte / bräuchte:

Javascript:
function LNv1(pMode, pyNr, pyNm, pLPrm)
{
 window.location.href = _yLTo[pyNr][pyNm];
}

Was meint Ihr mit
@Zvoni: "Array-Indexierung skurril" ?
@Sempervivum: "asynchronen Vorgänge" ?

@Zvoni::
Wenn ich die zusammengebaute Link-Variable als alert( _yLTo[pyNr][pyNm] ) ausgebe passt es.
Beispiel: https://de.web-domain.de/pg/ordner_1/seite_1.htm - alles gut !

Wennich direkt danach die Link-Variable mit window.location.href = _yLTo[pyNr][pyNm] auslöse fehlt plötzlich das letzte Array, bzw. wird "undefind" adressiert. Verstehe ich nicht...
Beispiel: https://de.web-domain.de/pg/ordner_1/undefined

Wie müsste / könnte das Array sonst indexiert werden ?
 
OK... soweit klar, hilft mir aber nicht weiter.

In der Funktion LNv1 gibt es nur einen Schritt zum Ausführen.
Das müsste doch problemlos klappen!?

Javascript:
function LNv1(pMode, pyNr, pyNm, pLPrm)
{
 window.location.href = _yLTo[pyNr][pyNm];
}
 
Was passiert denn mit dieser Variablen "scrpt"? Dem Namen nach liegt die Vermutung nahe, dass es sich um ein Skript handelt, was irgend wie ausgeführt wird.
 
Im Codeblock deiner function LNv1 -->
In dem Fall, das einzige was mir auffällt wäre, dass du in Zeile 7 am Ende mit einem Semicolon abschliesst, und somit die Variablen-Deklaration, welche in Zeile 3 Startet, somit in Zeile 7 beendet ist.
Woraus folgt dass die "LinkTo" in Zeile 16 eine AdHoc-Variable ist?

Gebe aber zu, dass ich mich in JS mal gar nicht auskenne.
Hab nur Verweise darauf gefunden, dass undeklarierte Variablen ein Problem bei alten Browsern sein kann.

Asonsten stimme ich dir zu: Kann auf den ersten Blick auch nichts erkennen....

EDIT: MOMENT MAL.
CodeBlock vom Array Zeile 11

_yLTo[0][2][1] = _yLTo[0][1][1] + "ordner_1/"

Fehlt da ein schliessendes Semicolon?
 
Zurück