Matthias: Fehler in Funktion

Hallo zusammen,

folgende Funktion funktioniert nicht und ich weiss nicht woran es liegt. Fehlermeldung im IE ist der Klassiker "Objekt erwartet". Es handelt sich insgesamt um ein Formular mit 2 Select-Menüs. Wird an dem einen ("titel1_font") der Defaultwert geändert, soll das andere ("titel2_font") entsprechend angepasst werden. Hierzu rufe ich die Funktion im ersten Select-Menü mit dem Eventhandler "onChange" auf. Hier also der Quellcode der Funktion:

function erzeugeSelect() {
  var fonts[] = new Array(6);

<%
   int laenge0 = Fontgruppen[0].length;
   int laenge1 = Fontgruppen[1].length;
   int laenge2 = Fontgruppen[2].length;
   int laenge3 = Fontgruppen[3].length;
   int laenge4 = Fontgruppen[4].length;
   int laenge5 = Fontgruppen[5].length;

out.print("fonts[0]= new Array(" + laenge0 + ");");
   out.print("fonts[1]= new Array(" + laenge1 + ");");
   out.print("fonts[2]= new Array(" + laenge2 + ");");
   out.print("fonts[3]= new Array(" + laenge3 + ");");
   out.print("fonts[4]= new Array(" + laenge4 + ");");
   out.print("fonts[5]= new Array(" + laenge5 + ");");

for (int i=0; i<6; i++) {
    for (int j=0; j<Fontgruppen[i].length; j++) {
     out.print("fonts[" + i + "][" + j + "]= "" + Fontgruppen[i][j] + "";");
    }
   }
  %>

var gruppenNr = 0;

for (var i=0; i<fonts.length; i++) {
   for(var j=0; j<fonts[i].length; j++) {
    if (fonts[i][j]== document.Fontauswahl.titel1_font.value) {
     gruppenNr=i;
    }
    else {
    }
   }
  }

var counter1 = 0;

for (var i=0; i<fonts[gruppenNr].length; i++) {
   NeuerEintrag = new Option(fonts[gruppenNr][i], fonts[gruppenNr][i]);
     document.Fontauswahl.titel2_font.options[i] = NeuerEintrag;
   counter1++;
    }

for (var i=counter1+1; i<document.Fontauswahl.titel2_font.length; i++) {

document.Fontauswahl.titel2_font.options[i] = null;
  }
}

Ich hoffe es handelt sich nicht um einen billigen Anfängerfehler, weil ich den Code schon mindestens 1000 mal durchgegangen bin.

Danke für eure Antworten schonmal vorab,

Gruß,
Matthias

P.S.: Ich denke nicht, dass es an dem JSP Teil liegt. Man kann den doch so einbinden, damit er von Javascript interpretiert wird, oder?

  1. Lieber Matthias,

    function erzeugeSelect() {
      var fonts[] = new Array(6);

    was soll denn "fonts[]" für ein Name für eine Array-Variablen sein? Hast Du das etwa mit PHP verwechselt, oder fehlt hier nur ein Index (weil eben "font" selbst bereits ein Array ist)?

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

    1. Ich habs geahnt, doch ein Anfängerfehler...

      var fonts[] = new Array(6); muss natürlich

      var fonts = new Array(6); heissen!

      Vielen Dank für deine schnelle Antwort,
      Gruß,
      Matthias