Jan M.: Parameter wird angeblich übergeben

Hallo !
Nachdem das mit der letzten Frage so gut geklappt hat verusche ich es gleich nochmal.
Hier der Quellcode:

function menu(visible,l_name,zahl)
{
this.x = visible;
this.view=m_view;
this.hide=m_hide;
this.hideit=m_hide2;
this.name=l_name;
this.anzahl=zahl;
this.over=0;
}

function m_hide()
{
  if(this.over==0)
  {
setTimeout(this.hideit(),100);
  }
}

function m_hide2()
{
  if(this.over==0)
  {    
parent.frames[1].document.all.menu2.style.visibility='hidden';
  }
}

function m_view()
{
parent.frames[1].document.all.menu2.style.visibility='visible';
}

menu1 = new menu(0,'menu1',3);

Über einen MouseOver bzw MouseOut auf einem Bild
onMouseOver="menu1.view();menu1.over=1;"
onMouseOut="menu1.over=0;menu1.hide()"
soll nun das menu verschwinden.

Hierbei erhalte ich aber folgende Fehlermeldung:
ungültes Argument (die Zeilenangabe verweist auf
setTimeout(this.hideit(),100);)

Wenn mir jemand sagen könnte woran das liegt wäre ich ihm sehr dankbar.
(Browser ist IE 5.0)

Mit freudnlichem Gruß Jan M.

  1. Hi,

    function menu(visible,l_name,zahl)
    function m_hide()
    function m_hide2()
    function m_view()

    ungültes Argument (die Zeilenangabe verweist auf

    »»  setTimeout(this.hideit(),100);)

    sehe ich nur schlecht, oder ist eine Funktion hideit() gar nicht vorhanden? :-)

    Wie dem auch sei, richtig wäre der Aufruf wie folgt:
    window.setTimeout("hideit()",100);

    Das "window" am Anfang ist glaube ich nicht nötig, ich hab's mir halt angewöhnt. Bei der Funktion brauchst Du jedenfalls kein "this", dafür muß sie auf jeden Fall in Anführungszeichen stehen!

    Cheatah

    1. Hi,

      function menu(visible,l_name,zahl)
      function m_hide()
      function m_hide2()
      function m_view()

      ungültes Argument (die Zeilenangabe verweist auf
      »»  setTimeout(this.hideit(),100);)

      sehe ich nur schlecht, oder ist eine Funktion hideit() gar nicht vorhanden? :-)

      Wie dem auch sei, richtig wäre der Aufruf wie folgt:
      window.setTimeout("hideit()",100);

      Das "window" am Anfang ist glaube ich nicht nötig, ich hab's mir halt angewöhnt. Bei der Funktion brauchst Du jedenfalls kein "this", dafür muß sie auf jeden Fall in Anführungszeichen stehen!

      Cheatah

      Hi nochmal!
      Also im original posting steht
      this.hideit=m_hide2;
      damit sollte ich doch this.hideit() aufrufen können oder nicht?
      lasse ich jetzt das 'this.' weg sagt er mir funktion würde nicht existieren, was auch einleuchtet.
      Wie ist es also möglich, nach 1 s die hideit() funktion eines objektes aufzurufen?

      zunächst mal danke für erste posting.

      MFG Jan M.

      1. Hi,

        Also im original posting steht
        this.hideit=m_hide2;

        ach so! Das habe ich übersehen... sorry!

        damit sollte ich doch this.hideit() aufrufen können oder nicht?

        Nein. hideit ist eine Variable, keine Funktion. Du kannst höchstens ein Konstrukt mit eval versuchen, etwa der Art eval("this.hideit"+"()"); aber ehrlich gesagt glaube ich da nicht dran. Ich würde eher eine Funktion versuchen, die hideit auf den Wert überprüft und dann entsprechend verzweigt, also etwa:
        function jump() {
          if (hideit == 'm_hide2') m_hide2();
          else if (hideit == '...') ...();
        }

        Cheatah

        1. Hi,

          Also im original posting steht
          this.hideit=m_hide2;

          ach so! Das habe ich übersehen... sorry!

          damit sollte ich doch this.hideit() aufrufen können oder nicht?

          Ich würde eher eine Funktion versuchen, die hideit auf den Wert überprüft und dann entsprechend verzweigt, also etwa:

          function jump() {
            if (hideit == 'm_hide2') m_hide2();
            else if (hideit == '...') ...();
          }

          Cheatah

          Hi !

          window.setTimeout(this.name+".hideit()",1000);

          Dies ist der Aufruf wie ich ihn jetzt verwende, der klappt und macht genau das was ich will. ich bin gestern nacht noch selber draufgekommen.

          danke fuer die antwort.

          Jan M.