Klaus Thiesler: Layer-Technik

MoinMoin
Mit <div id="Layer1"> in CSS lassen sich Ebenen á la CAD darstellen, zum Sichtbarmachen und Unsichtbarmachen reicht ein kurzes JavaScript auf ein Button/Textlink: onClick="MM_changeProp('Layer2','','style.visibility','visible','LAYER')">. und onClick="MM_changeProp('Layer2','','style.visibility','hidden','LAYER')">. . Zum einfachen Wechseln der Ebenen in einem Event darf nur 1 Ebene sichtbar gemacht werden, alle anderen müssen unsichtbar werden. Das erfordert mehrere gleichzeitige JS-Befehle (übersichtliches Array), was aber nicht abgearbeitet wird, weil JS nur einen einzigen Befehl in einem Event annimmt.
Dreamweaver generiert browserabhängig komplizierte JS-Funktionen, die aber weder auf allen Browsern laufen, noch kompatibel oder übersichtlich sind.
Weiß jemand eine einfache Lösung, um mehrere Anweisungen "gleichzeitig" auszuführen?
MoinMoin Klaus

  1. Hallo Klaus,

    Dreamweaver generiert browserabhängig komplizierte JS-Funktionen, die aber weder auf allen Browsern laufen, noch kompatibel oder übersichtlich sind.

    Richtig. Außerdem produziert Dreamweaver einen solch kaputten Quelltext, dass es der blanke Hohn wäre, das als HTML zu bezeichnen ;-)

    [...] weil JS nur einen einzigen Befehl in einem Event annimmt.weil JS nur einen einzigen Befehl in einem Event annimmt.

    Ich wäre mir da nicht so sicher. Ich weiß zwar jetzt nicht, ob das in Javascript vorgesehen ist, jedenfalls hat das bei mir immer funktioniert (z.B. <bla onClick="do_this(); do_that();"></bla>).
    Wie gesagt, ich weiß allerdings wirklich nicht, ob das zum Standard gehört.

    Weiß jemand eine einfache Lösung, um mehrere Anweisungen "gleichzeitig" auszuführen?

    Naja, die einfachste Möglichkeit ist, sich selber eine Funktion zu bauen, die dann im Eventhandler aufgerufen wird.

    Grüße aus Darmstadt,
    Benjamin

    --
    Signatur? Sowas brauche ich nicht, da steht eh' meist nur Nonsens drin.
    1. Hallo,

      Ich wäre mir da nicht so sicher. Ich weiß zwar jetzt nicht, ob das in Javascript vorgesehen ist, jedenfalls hat das bei mir immer funktioniert (z.B. <bla onClick="do_this(); do_that();"></bla>).
      Wie gesagt, ich weiß allerdings wirklich nicht, ob das zum Standard gehört.

      Es gehört.
      http://www.w3.org/TR/html4/types.html#type-script
      Man kann im Prinzip in einen Eventhandler alles reinschreiben, was man auch in das SCRIPT-Element schreiben kann. Sehr übersichtlich wird das allerdings nicht.

      Gruß

      Axel

  2. Hallo Klaus,

    Weiß jemand eine einfache Lösung, um mehrere Anweisungen "gleichzeitig" auszuführen?

    Ich würde einfach eine Funktion definieren ...

    function zweibefehle() {
    alert("eins");
    alert("zwei");
    }

    ... und diese dann über onclick einbinden:

    <a href="" onclick="zweibefehle(); return false;">klick!</a>

    Funktioniert bei mir problemlos. Es besteht ja keinerlei Grund, alles in den Eventhandler zu packen. In Deinem Fall definierst Du dann einfach eine Funktion die den betreffenden Layer einblendet und die anderen ausblendet. Damit die Funktion weiß, um welchen Layer es sich handelt, wird dessen Name an die Funktion übergeben und dort verarbeitet. Oder habe ich Dich jetzt falsch verstanden?

    • Tim
    --
    Diese Signatur ist abgelaufen.
    Bitte besorgen Sie sich eine neue.
  3. Hallo,

    Weiß jemand eine einfache Lösung, um mehrere Anweisungen "gleichzeitig" auszuführen?

    Hier waere wohl eher eine Schleife angebracht, die das sichtbar zu machende Element anzeigt und alle anderen versteckt (je nach ID und/oder numerischem Index).

    Vom Ansatz her fuer DOM-Browser:

    var testid="abc";
    var divs=document.getElementsByTagName("div");
    for(i=0;i<divs.length;i++)
    {
      if(divs[i].id==testid)divs[i].style.visibility="visible";
      else divs[i].style.visibility="hidden";
    }

    MfG, Thomas