Nina: Javascript fuer Selectboxen funktioniert nicht mit Netscape 6.1

Hallo,
Ein Javascript, dass unter IE und Netscape 4.7 problemlos läuft, weigert sich unter Netscape 6.1. In der Konsole ist folgender Fehler nachzulesen, mit dem ich aber nicht viel anfangen kann:

Fehler: uncaught exception: [Exception... "Cannot modify properties of a WrappedNative"  nsresult: "0x80570034 (NS_ERROR_XPC_CANT_MODIFY_PROP_ON_WN)"  location: "JS frame :: http://blablabla (mein Pfad):: <TOP_LEVEL> :: line 37"  data: no]

Im Script werden - gefuettert aus der Datenbank - Oberrubriken in eine Selectbox einglesen. Wird die Oberrubrik markiert, werden die Unterrubriken in einer zweiten Selectbox angezeigt und in zwei input-Feldern die selektierte Oberrubrik und selektierte Unterrubrik nochmals extra angezeigt.

Eigentlich muessten die Oberrubriken gleich bei Aufruf eingelesen werden in die Selectbox, was jedoch nicht geschieht (obwohl im Seitenquelltext ersichtlich der Array scheinbar korrekt aufgebaut wird - aber nicht ausgegeben).

Das Script ist ziemlich lang...aber wenn jemand mir nur einen Tip geben koennte, worauf sich der Fehler bezieht, wäre mir schon geholfen.

Line 37 im Seitenquelltext wäre:

Components[x] = new Component(3, "Alles fürs Kleinkind");
 x++;

Danke im Voraus
Nina

Das Script:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
<title></title>
<link type="text/css" rel="stylesheet" href="./css/styles.css">
<style type="text/css">
   @import url(./css/styles.css);
  </style>

<SCRIPT language="Javascript" TYPE="text/javascript">
<!--

function Array(Length)
  {
    this.length = Length;
    for (i=0; i<Length; i++)
      this[i] = "";
  }

function Component(id, name)
  {
    this.name = name;
    this.id = id;
  }

function Subcomponent(id, compid, name)
  {
    this.name = name;
    this.compid = compid;
    this.id = id;
  }

Components = new Array(<@numrows>);
 x=0;

<@ROWS>
Components[x] = new Component(<@COLUMN '1_Oberrubrik.ID'>, "<@COLUMN '1_Oberrubrik.Oberrubrik' encoding="none">");
 x++;
/@ROWS

Subcomponents = new Array(<@numrows>);
  y=0;
 <@rows>

Subcomponents[y] = new Subcomponent(<@COLUMN '2_Unterrubrik.ID'>,<@COLUMN '2_Unterrubrik.Ober_ID'>,"<@COLUMN '2_Unterrubrik.Bezeichnung' encoding="none">");
y++;

/@rows
var myArrayU = new Array();
var myArrayO = new Array();
var myArrayU_name = new Array();

function ChangeComp(Ind)
  {

var number=document.myForm.Component.selectedIndex;
 var oberrubrik_name = Components[number].name;
  document.myForm.Oberrubrik_Name.value=oberrubrik_name;

j=0;
    document.myForm.Subcomponent.options.length = 0;

for (n=0; n<Subcomponents.length; n++)
    {
      if (Subcomponents[n].compid == Components[Ind].id)
      {
        document.myForm.Subcomponent.options[j] = new Option ( Subcomponents[n].compid+"-"+Subcomponents[n].id+"-"+Subcomponents[n].name, Subcomponents[n].id, Subcomponents[n].compid);

myArrayU[j] = Subcomponents[n].id;
  myArrayO[j] = Subcomponents[n].compid;
  myArrayU_name[j] = Subcomponents[n].name;

j++;
      }
    }
 document.myForm.Oberrubrik_ID.value="";
 document.myForm.Unterrubrik_ID.value="                  ";
 document.myForm.Unterrubrik_Name.value="";

}

function ausgabe(Ind){
       var number=document.myForm.Subcomponent.selectedIndex;
       var unterrubrik=myArrayU[number];
    var oberrubrik=myArrayO[number];
    var unterrubrik_name=myArrayU_name[number];
  document.myForm.Unterrubrik_ID.value=unterrubrik;
  document.myForm.Oberrubrik_ID.value=oberrubrik;
  document.myForm.Unterrubrik_Name.value=unterrubrik_name;

}

function SetInitialValues()
  {
    document.myForm.Component.options.length = 0;
    for (n=0; n<Components.length; n++)
      document.myForm.Component.options[n] = new Option(Components[n].id+" "+Components[n].name, Components[n].id);
  }
//-->
</script>
//am Ende des Bodys:
<script language="JavaScript">
   SetInitialValues();
</script>

  1. Hi,
    das Problem hat sich erledigt. Wenn ich es richtig sehe, ist hier Javascript mit Java (vordefinierten Objektnamen) durcheinander gekommen. Habe "Component" und "Components" im Script umbenannt und dann gings.
    Gruß Nina

    Hallo,
    Ein Javascript, dass unter IE und Netscape 4.7 problemlos läuft, weigert sich unter Netscape 6.1. In der Konsole ist folgender Fehler nachzulesen, mit dem ich aber nicht viel anfangen kann:

    Fehler: uncaught exception: [Exception... "Cannot modify properties of a WrappedNative"  nsresult: "0x80570034 (NS_ERROR_XPC_CANT_MODIFY_PROP_ON_WN)"  location: "JS frame :: http://blablabla (mein Pfad):: <TOP_LEVEL> :: line 37"  data: no]

    Im Script werden - gefuettert aus der Datenbank - Oberrubriken in eine Selectbox einglesen. Wird die Oberrubrik markiert, werden die Unterrubriken in einer zweiten Selectbox angezeigt und in zwei input-Feldern die selektierte Oberrubrik und selektierte Unterrubrik nochmals extra angezeigt.

    Eigentlich muessten die Oberrubriken gleich bei Aufruf eingelesen werden in die Selectbox, was jedoch nicht geschieht (obwohl im Seitenquelltext ersichtlich der Array scheinbar korrekt aufgebaut wird - aber nicht ausgegeben).

    Das Script ist ziemlich lang...aber wenn jemand mir nur einen Tip geben koennte, worauf sich der Fehler bezieht, wäre mir schon geholfen.

    Line 37 im Seitenquelltext wäre:

    Components[x] = new Component(3, "Alles fürs Kleinkind");
    x++;

    Danke im Voraus
    Nina

    Das Script:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 //EN">
    <html>
    <head>
    <title></title>
    <link type="text/css" rel="stylesheet" href="./css/styles.css">
    <style type="text/css">
       @import url(./css/styles.css);
      </style>

    <SCRIPT language="Javascript" TYPE="text/javascript">
    <!--

    function Array(Length)
      {
        this.length = Length;
        for (i=0; i<Length; i++)
          this[i] = "";
      }

    function Component(id, name)
      {
        this.name = name;
        this.id = id;
      }

    function Subcomponent(id, compid, name)
      {
        this.name = name;
        this.compid = compid;
        this.id = id;
      }

    Components = new Array(<@numrows>);
    x=0;

    <@ROWS>
    Components[x] = new Component(<@COLUMN '1_Oberrubrik.ID'>, "<@COLUMN '1_Oberrubrik.Oberrubrik' encoding="none">");
    x++;
    /@ROWS

    Subcomponents = new Array(<@numrows>);
      y=0;
    <@rows>

    Subcomponents[y] = new Subcomponent(<@COLUMN '2_Unterrubrik.ID'>,<@COLUMN '2_Unterrubrik.Ober_ID'>,"<@COLUMN '2_Unterrubrik.Bezeichnung' encoding="none">");
    y++;

    /@rows
    var myArrayU = new Array();
    var myArrayO = new Array();
    var myArrayU_name = new Array();

    function ChangeComp(Ind)
      {

    var number=document.myForm.Component.selectedIndex;
    var oberrubrik_name = Components[number].name;
      document.myForm.Oberrubrik_Name.value=oberrubrik_name;

    j=0;
        document.myForm.Subcomponent.options.length = 0;

    for (n=0; n<Subcomponents.length; n++)
        {
          if (Subcomponents[n].compid == Components[Ind].id)
          {
            document.myForm.Subcomponent.options[j] = new Option ( Subcomponents[n].compid+"-"+Subcomponents[n].id+"-"+Subcomponents[n].name, Subcomponents[n].id, Subcomponents[n].compid);

    myArrayU[j] = Subcomponents[n].id;
      myArrayO[j] = Subcomponents[n].compid;
      myArrayU_name[j] = Subcomponents[n].name;

    j++;
          }
        }
    document.myForm.Oberrubrik_ID.value="";
    document.myForm.Unterrubrik_ID.value="                  ";
    document.myForm.Unterrubrik_Name.value="";

    }

    function ausgabe(Ind){
           var number=document.myForm.Subcomponent.selectedIndex;
           var unterrubrik=myArrayU[number];
        var oberrubrik=myArrayO[number];
        var unterrubrik_name=myArrayU_name[number];
      document.myForm.Unterrubrik_ID.value=unterrubrik;
      document.myForm.Oberrubrik_ID.value=oberrubrik;
      document.myForm.Unterrubrik_Name.value=unterrubrik_name;

    }

    function SetInitialValues()
      {
        document.myForm.Component.options.length = 0;
        for (n=0; n<Components.length; n++)
          document.myForm.Component.options[n] = new Option(Components[n].id+" "+Components[n].name, Components[n].id);
      }
    //-->
    </script>
    //am Ende des Bodys:
    <script language="JavaScript">
       SetInitialValues();
    </script>