Andreas Bierhals: Array-Variable zusammen setzen

Beitrag lesen

Moin nochmal,

ich zitiere mal aus Deinem Quellcode:

===8><==================================
var ie = document.all;
var nn = document.layers;

var summe = new Array("unterne");
var unterne_mp = new Array("mpportr", "mpleist", "mpstrat", "mpfacts", "mpjobs");
var unterne_mp_pos = new Array();

function init()
    {
        for(var i = 0; i < summe.length; i++)
            {
                for(var x = 0; x < eval(summe[i] + ".length"); x++)
                    {
                        if(nn) { eval(summe[i] +  "_mp_pos[x] = document.layers["  +  summe[i]  +  "_mp[x]].pageY"); }
                        if(ie) { eval(summe[i] + "_mp_pos[x]= document.all[" + summe[i] + "_mp[x]].offsetTop;"); }
                    }
            }
    
    alert(unterne_mp_pos.join(","));
    // Bei alert sollte nun dies zu sehen sein
    // 45,65,85,105,125  
    }

===8><==================================

Wenn man in der inneren Schleife das eval() auflöst, kommt folgendes dabei heraus:

for(var x = 0; x<unterne.length; x++) { ... }

Das Problem daran: "unterne.length" existiert nicht, wohl aber unterne_mp.length!
Der Fehler "invalid character", der weiter unten auftritt, ist offenbar ein Folgefehler
davon. Wenn Du die Schleife umänderst in

for(var x=0; x < eval(summe[i] + "_mp.length"); x++) { ... }

sind die JS-Errors beseitigt, und das alert-Fenster erscheint so, wie Du es im Quelltext
weiter unten angekündigt hattest. Den Fehler konnte ich übrigens erst sehen, als ich
die eine Zeile in der Schleife in

if (nn) { alert(summe[i] + ......); }

verändert habe.
Danach gab es zum ersten mal eine hilfreiche Fehlermeldung von Netscape ("unterne not defined").
Warum diese Fehlermeldung vorher nicht kam, ist mir sehr rätselhaft - ein Folgefehler
eines Fehlers verhindert sozusagen, daß vom ersten Fehler eine vernünftige Fehlermeldung
erscheint. Ist das die künstliche Intelligenz von Javascript?! ;-)

Bis dannundwann

Andreas