Bernd Witzke: Dynamische Buttons

Hallo liebe HelferInnen,
möchte in einem Index-Frame Links über dynamische  Buttons in einem 2. Frame aufrufen. Das gewählte Button soll aktiv bleiben - sich also hervorheben gegenüber den anderen Buttons - solange ich auf der gewählten Seite verbleibe. Ein Wechsel der Seite über den nächsten Button soll diesen als aktiv ausweisen, den 1. Button inaktiv schalten. Wie ist so etwas machbar?
Vielen Dank.
Gruß
Bernd

  1. Hallo liebe HelferInnen,
    möchte in einem Index-Frame Links über dynamische  Buttons in einem 2. Frame aufrufen. Das gewählte Button soll aktiv bleiben - sich also hervorheben gegenüber den anderen Buttons - solange ich auf der gewählten Seite verbleibe. Ein Wechsel der Seite über den nächsten Button soll diesen als aktiv ausweisen, den 1. Button inaktiv schalten. Wie ist so etwas machbar?
    Vielen Dank.
    Gruß
    Bernd

    Hallo Bernd,

    leg Dir in Deinem Index-Frame alle! benutzten Button (für inaktiv und aktiv) als Objekte an,
    dann schreibst Du Dir zwei kurze functions, die ungefähr so aussehen:

    but1   = new Image();    but1.src   = "but1.gif";
      but1on = new Image();   but1on.src = "but1_on.gif";
      but2   = new Image();    but2.src   = "but2.gif";
      but2on = new Image();   but1on.src = "but2_on.gif";

    function img_act(aktivierterButton) {
        imgOn = eval(aktivierterButton + "aktiv.src");
        document[aktivierterButton].src = imgOn;
    }

    function img_inact(deaktivierterButton) {
        imgOff = eval(deaktivierterButton + ".src");
        document [deaktivierterButton].src = imgOff;
    }

    Bei den Links machst Du es dann so:

    <A HREF="DeinLinkEins" onClick = "img_act('but1');img_inact('but2');return true" ><IMG border=0 NAME="but1" SRC="but1.gif"></A><BR>
          <A HREF="DeinLinkZwei" onClick = "img_act('but2');img_inact('but1');return true" ><IMG border=0 NAME="but1" SRC="but1.gif"></A><BR>

    Schematisch gesehen wärs das. Wichtig ist noch, alle inaktiven Buttons müssen dann natürlich inaktiviert werden. Mit ein bischen mehr JS kannst Du Dir natürilch auch den aktivierten Button merken und nur diesen inaktivieren.

    Michael N.

  2. dynamische  Buttons

    Hallo Bernd,

    zumindest mit JavaScript geht's.
    Anders (Server) sicher auch.

    Hab' mal etwas damit (JS) rumgespielt.
    Dazu habe ich mir im Head der obersten
    Framedefinition ein paar Variablen und Funktionen
    definiert, glaube auch ein Array mit den
    Knopfbildern.
    Geht erstaunlicherweise. Framesets dürfen sonst
    nur Framedefinitionen enthalten (+ noframes).

    Eine der Variablen sagt etwas darüber aus in
    welchem Zustand der Navigationsbalken (Index) ist,
    eine andere etwas über das/die Inhaltsframe(s).
    Eine der Funktionen heisst UpDateImgs(param)
    und wird von jedem relevanten Maus(click)event
    aufgerufen. Sie enthält soviel Statements wie
    Knöpfe und macht jede Menge if-Abfragen und
    lädt die Bildchen um oder (else) auch zurück.

    Navigationsbalken alleine geht noch, wenn Deine
    Seitenstruktur komplexer ist, kann's lästig
    werden. Wenn noch synchrone MouseOvers und
    MouseOuts dazukommen, dann tipp und debug man
    schön.

    Bei mir hat's auch ganz brauchbar funktioniert,
    solange ich das Fenster nicht zurechtgezupft habe,
    dann werden alle Variablen nämlich 'resettet'.
    Ach so, mit animierten GIF's war's auch nicht so
    dolle, die hören dann gerne auf animiert zu sein.
    Warum Was Wann Wo hab' ich dabei aber nicht ganz
    kapiert.

    Mit Netscape 3 tut's auf Win3.11 + Win95 + NT4,
    mit MSIE 3 auf Win3.11 nicht,
    mit MSIE 3 auf Win95 gibt's Fehlermeldungen.

    Das war grob mein Ansatz, vielleicht solltest Du
    noch bei Christine wildern gehen, sie ist da
    Crack!

    Klaus

    1. dynamische  Buttons

      Hallo Bernd,

      zumindest mit JavaScript geht's.
      Anders (Server) sicher auch.

      Hab' mal etwas damit (JS) rumgespielt.
      Dazu habe ich mir im Head der obersten
      Framedefinition ein paar Variablen und Funktionen
      definiert, glaube auch ein Array mit den
      Knopfbildern.
      Geht erstaunlicherweise. Framesets dürfen sonst
      nur Framedefinitionen enthalten (+ noframes).

      Eine der Variablen sagt etwas darüber aus in
      welchem Zustand der Navigationsbalken (Index) ist,
      eine andere etwas über das/die Inhaltsframe(s).
      Eine der Funktionen heisst UpDateImgs(param)
      und wird von jedem relevanten Maus(click)event
      aufgerufen. Sie enthält soviel Statements wie
      Knöpfe und macht jede Menge if-Abfragen und
      lädt die Bildchen um oder (else) auch zurück.

      Navigationsbalken alleine geht noch, wenn Deine
      Seitenstruktur komplexer ist, kann's lästig
      werden. Wenn noch synchrone MouseOvers und
      MouseOuts dazukommen, dann tipp und debug man
      schön.

      Bei mir hat's auch ganz brauchbar funktioniert,
      solange ich das Fenster nicht zurechtgezupft habe,
      dann werden alle Variablen nämlich 'resettet'.
      Ach so, mit animierten GIF's war's auch nicht so
      dolle, die hören dann gerne auf animiert zu sein.
      Warum Was Wann Wo hab' ich dabei aber nicht ganz
      kapiert.

      Mit Netscape 3 tut's auf Win3.11 + Win95 + NT4,
      mit MSIE 3 auf Win3.11 nicht,
      mit MSIE 3 auf Win95 gibt's Fehlermeldungen.

      Das war grob mein Ansatz, vielleicht solltest Du
      noch bei Christine wildern gehen, sie ist da
      Crack!

      Klaus

      Hallo,
      ich hatte mal ein ähnliches Problem. Button, die beim drüberfahren die Farbe wechseln (beim verlassen natürlich wieder zum Alten wechseln) und beim Anklicken noch mal ein anderes Bild zeigen. Das solange aktiv bleibt bis ein anderes Bild angeklickt wird.

      Die else- Schleifen brauchst du wohl nicht. Wichtig ist sich eine gute NAmesgebung für die Bilder zu überlegen und  einem jeweiligen Bildersatz eine bestimmte Endung zuweisen.

      Das Script sieht viel komplizierter aus als es ist.

      Nimm 6 Bilder. mache zwei 3er-Staffeln draus. Unten ein kleines Beispiel.  
      /**
      var img_nach;
      var img_vor;
      var img_test;
      var img_click;
      var img_name;

      function move_in(img_num,img_name)
        {

      if (document.images)  
      

      {
          Bild=document.images[img_num].src;
          Suche=Bild.indexOf("b.jpg");
          
            if(Suche!="-1")

      {
             }
            else
             {  
              img_test="in";
              document.images[img_num].src=img_name;
             }
         }
      }
      function move_out(img_num,img_name)
      {

      if (document.images)  
      

      {Bild=document.images[img_num].src;
          Test=Bild.indexOf("b.jpg");

      if(Test!="-1")

      {}
            else
             {  
             if(img_test=="in")
               {
              document.images[img_num].src=img_name;
              }
            }  
         }  
      }
      ///
      function bildwechsel(img_num,img_name)
      {

      if(document.images)
        {
         if(img_nach=="click")
         {

      if(img_num!=img_click)
          {

      Bild=document.images[img_click].src;
          Test=Bild.indexOf("b.jpg");

      if(Test!="-1")
           {
           Folge=img_vor;
           Tausch=Folge.replace(/b.jpg$/,"sl.jpg");
           document.images[img_click].src=Tausch;
           document.images[img_num].src=img_name;
           img_click=img_num;
           img_vor=img_name;
           }
          }
         }
        }
        else
        {
        if(document.images){
        document.images[img_num].src=img_name;
        img_click=img_num;
        img_vor=img_name;
        }
        
        img_nach="click";    
      }
      }

      }

      <a href="javascript:bildwechsel('PZ','/121b.jpg');(Hier Befehl für den Link)"onmouseover="move_in('PZ','/121rsl.jpg')" onmouseout="move_out('PZ','/121sl.gif')"><img src=/121sl.gif name="PZ" HEIGHT=16 Width=118 border=0></a><br>

      **/
      Wenn du natürlich von einem Frame auf den anderern zugreifen möchtest mußt du halt alles neu referenzieren. Hier wird zwar ein Button mehr verwendet als du urspünglich wolltest, sieht aber auch ganz gut aus.
      Funktioniert natürlich nur in einem 4er Brwoser.
      Viel Spaß beim Klammern prüfen und debuggen. Das Script läuft, das kann ich dir versprechen.
      Aber du mußt halt einige Sachen (vor allem Klammern) prüfen. Oben sind glaube ich zumindest zwei Variablen zu viel angegeben. Aber zuviel schadet ja nicht.

      dirk