Riccardo: private Variablen und Netscape 4.7

Hallo!

Ich hab ein kleines Script geschrieben, das mit Objekten arbeitet.

function Menu(id)
{
 var menuId = id;
 var menuEntrys = new Array();

this.addEntry = addEntry;

function addEntry(entry)
 {
  var contains = false;

//Hier ist menuEntrys nicht mehr vorhanden (Fehlermeldung menuEntrys has no properties)

for(var i = 0; i < menuEntrys.length; i++)
  {
   if(menuEntrys[i].getId() == entry.getId())
    contains = true;
  }

if(!contains)
   menuEntrys.push(entry);
 }
}

function MenuEntry(id)
{
 var id = id;

this.getId = getId;

function getId()
 {
  return id;
 }
}

In meiner Html-Seite habe ich folgenden Aufruf:

<script type="text/javascript">
<!--
 var menu;
 var menuEntry;

menu = new Menu('menu');

menuEntry = new MenuEntry('e1', 'Entry1', '#');
 menu.addEntry(menuEntry);

menuEntry = new MenuEntry('e2', 'Entry2', '#');
 menu.addEntry(menuEntry);
//-->
</script>

Mein Problem ist jetzt, das Netscape 4.7 bei dem Aufruf von menu.addEntry(menuEntry) eine Fehlermeldung bringt: "menuEntrys has no properties"
Weiss jemand eine Lösung für das Problem? Die Variable sollte aber private bleiben, wenn es geht.

MfG

Riccardo

  1. Hallo,

    Weiss jemand eine Lösung für das Problem? Die Variable sollte aber private bleiben, wenn es geht.

    also sowas möchtest du vermeiden?

    var menuEntrys = [];
    function Menu(id)
    {
     var menuId = id;

    Grüsse

    Cyx23

    1. Hallo Cyx23!

      also sowas möchtest du vermeiden?

      var menuEntrys = [];
      function Menu(id)
      {
      var menuId = id;

      Ja, das will ich vermeiden. Ebenso

      function Menu(id)
      {
        this.menuEntrys = new Array();
      }

      MfG

      Riccardo

      1. Hallo,

        also sowas möchtest du vermeiden?

        var menuEntrys = [];
        function Menu(id)
        {
        var menuId = id;

        Ja, das will ich vermeiden. Ebenso

        schade, es schien zu funktionieren.

        Aber vielleicht so:

        <script>
        function Menu(id){
        var menuId = id;
        var menuEntrys = new Array();
        document.menuEntrys =  menuEntrys;
        this.addEntry = addEntry;

        function addEntry(entry) {
          var contains = false;
          for(var i = 0; i < document.menuEntrys.length; i++)
        {
           if(document.menuEntrys[i].getId() == entry.getId())
            contains = true;
          }

        if(!contains)
           document.menuEntrys.push(entry);
         }
        }

        function MenuEntry(id)
        {
         var id = id;

        this.getId = getId;

        function getId()
         {
          return id;
         }
        }

        </script>
        <script type="text/javascript">
        <!--
         menu = new Menu('menu');
         menuEntry = new MenuEntry('e1', 'Entry1', '#');
         menu.addEntry(menuEntry);
         menuEntry = new MenuEntry('e2', 'Entry2', '#');
         menu.addEntry(menuEntry);
        //-->
        </script>

        Grüsse

        Cyx23