Hill: Variablen Namen ermitteln.

Hallo, ich Arbeite derzeit an einer Funktion, welche am Ende immer bestimmte Div Bereiche oder Layer Ein oder Ausblendet.

Das klappt soweit ganz gut, allerdings harpert es mir jetzt etwas an Grundwissen und ich habe nun leider ein Problem:

Die folgende Funktion, bekommt 2 Übergabewerte, der eine sagt der Funktion um welchen Layer es sich handelt, (css bezeichnung) der andere Übergabewert übermittelt den Namen einer Globalen Variable, welche als Schalter dient... Da das Script mehrere einzelne Layer ansteuern soll, ist es allerdings erforderlich das auch die Globale Variable geändert wird:

function menutoggle(abc,abc2)
{
  if (abc2==0)
  {
    abc2=1;
    Menue(abc);
  }
  else
  {
    abc2=0;
    noMenue(abc);
  }
}

Wie frage ich also den namen der Globalen Variable ab, welche sich hinter abc2 verbirgt ?

Praktisch müsste es so aussehen:

function menutoggle(abc,abc2)
{
  if (abc2==0)
  {
    abc2=1;
    ERMITTELTER VARIABLEN NAME=abc2;
    Menue(abc);
  }
  else
  {
    abc2=0;
    ERMITTELTER VARIABLEN NAME=abc2;
    noMenue(abc);
  }
}

Die Funktion funktioniert so bereits sehr gut, allerdings nur einmal, da sich die Globale Funktion welche hinter abc2 steckt nicht ändert :(

Danke im Voraus

euer

Hill

  1. Dein Ansatz ist nicht so ganz das wahre.
    Wie viele globale Variablen gibt es denn? Du könntest die in einem Array halten und dann den Index übergeben (oder den Namen).
    Wenns drum geht dass du da drin die Sichtbarkeit vom Menü merken willst, die steht doch auch im Style des Elements. Also etwa dann so
    if (meinElement.style.visible) ...
    Dann brauchst du keine separaten Merker.

    1. Dein Ansatz ist nicht so ganz das wahre.
      Wie viele globale Variablen gibt es denn? Du könntest die in einem Array halten und dann den Index übergeben (oder den Namen).
      Wenns drum geht dass du da drin die Sichtbarkeit vom Menü merken willst, die steht doch auch im Style des Elements. Also etwa dann so
      if (meinElement.style.visible) ...
      Dann brauchst du keine separaten Merker.

      Perfekt, das hilft mir in diesem Fall sehr, Danke !

      Allerdings könnte ich das Wissen sicher noch woanders gebrauchen, also versuche ich die Frage allgemeiner zu stellen:

      Ich habe mehrere Buttons, womit ich jeweils einzelne Objekte verändern möchte.

      Ich möchte dafür allerdings die selbe Funktion nutzen.

      beispiel:

      var x_1=1;
      var y_1=5;

      var x_2=34;
      var y_2=23;

      es gibt buttons die beispielsweise bei click eine Funktion mit 3 Übergabewerten aufruft:
      <input type=button Onclick="diefunktion(x_1,y_1,'bild1')">
      <input type=button Onclick="x_2,y_2,'bild2'">

      Folgend die Funktion, der Inhalt der Funktion und was sie tut, soll in dem fall nicht wichtig sein:

      function diefunktion(a,b,c)
      {
      "f1."+c+".width=a    // Diese Zeile Verwendet die Variablen auf normale Art
      "f1."+c+".height=b   // Diese Zeile Verwendet die Variablen auf normale Art
                    //Hier an dieser Stelle, würde ich gern den Variablen die sich hinter a und b verbergen einen neuen Wert zuweisen, allerdings da es sich um einen Übergabeparameter Handelt, kennt die Funktion die Variablen x_1 und y_1 bzw. x_2 und y_2 nicht.

      }

      Sofern nicht mehr als 2 oder 3 unterschiedliche möglichkeiten an Variablen genutzt werden, kann man ohne probleme diese in eine If Schleife setzen und so den gewünschten Effekt erzielen.

      Wenn man nun aber von einer Seite mit viel mehr Variablen ausgeht, würde das ganze allerdings etwas unübersichtlich.

      Meine Frage daher, es gibt doch sicher eine viel einfachere möglichkeit der Funktion klar zumachen das sie das Ergebnis in den Ursprung eines Übergabeparameters abgibt.... Oder andersausgedrückt, es ist doch sicherlich möglich einer Funktion als Übergabeparameter den Namen von Variablen zu übertragen oder ?

      1. Hi,

        Allerdings könnte ich das Wissen sicher noch woanders gebrauchen, also versuche ich die Frage allgemeiner zu stellen:

        Ich habe mehrere Buttons, womit ich jeweils einzelne Objekte verändern möchte.

        Ich möchte dafür allerdings die selbe Funktion nutzen.

        Arbeite Objektorientiert.

        MfG ChrisB

        --
        “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
  2. Hallo,

    ein paar Sachen versteh ich nicht:

    Die folgende Funktion, bekommt 2 Übergabewerte, der eine sagt der Funktion um welchen Layer es sich handelt, (css bezeichnung) der andere Übergabewert übermittelt den Namen einer Globalen Variable, welche als Schalter dient... Da das Script mehrere einzelne Layer ansteuern soll, ist es allerdings erforderlich das auch die Globale Variable geändert wird:

    abc2 ist also der Name, also ein String??

    function menutoggle(abc,abc2)
    {
      if (abc2==0)
      {
        abc2=1;
        Menue(abc);
      }
      else
      {
        abc2=0;
        noMenue(abc);
      }
    }

    Wie frage ich also den namen der Globalen Variable ab, welche sich hinter abc2 verbirgt ?

    Ich dachte abc2 ist schon der Name?

    Praktisch müsste es so aussehen:

    function menutoggle(abc,abc2)
    {
      if (abc2==0)
      {
        abc2=1;
        ERMITTELTER VARIABLEN NAME=abc2;
        Menue(abc);
      }
      else
      {
        abc2=0;
        ERMITTELTER VARIABLEN NAME=abc2;
        noMenue(abc);
      }
    }

    Du willst den Namen der Variable derselbigen zuweisen?

    Vermutlich brauchst du einfach nur das hier:

    window["namederglobalenvariable"] = wert;

    Gruß!