Missy: grafik durch text ersetzen

ich habe mehrere grafiken, diese habe ich in buttons umgewandelt, d.h. wenn jemand drauf klickt, dann wird ein script aufgeführt.
da die mit jedem button möglich ist, möchte ich nun, dass sich die anderen nicht gedrückten buttons in einen kurzen text, wie z.b. not avaible, umwandeln und so kein weiteres script ausgeführt werden kann, was vorher der fall gewesen wäre.
ich würde mich über hilfe freuen und bedanke mich schon mal im voraus.

mfg, missy

  1. Hallo, missy,

    ich habe mehrere grafiken, diese habe ich in buttons umgewandelt, d.h. wenn jemand drauf klickt, dann wird ein script aufgeführt.
    da die mit jedem button möglich ist, möchte ich nun, dass sich die anderen nicht gedrückten buttons in einen kurzen text, wie z.b. not avaible, umwandeln ...

    Wenn das besagte Script ausgeführt, könntest du einfach das Bild wechseln, siehe http://selfhtml.teamone.de/javascript/beispiele/buttons.htm, sodass das Bild nach dem ersten Ausführen dauerhaft ein N/A-Schriftzug o.ä. enthält.

    Wenn du das besagte Button tatsächlich in ein Text umwandelt willst, müsstest du dich mit JavaScript/DOM auseinandersetzen, die relevanten Funktionen wären AFAIK:
    createElement() http://selfhtml.teamone.de/javascript/objekte/document.htm#create_element
    createTextNode() http://selfhtml.teamone.de/javascript/objekte/document.htm#create_text_node
    removeChild() http://selfhtml.teamone.de/javascript/objekte/node.htm#remove_child und anschließend appendChild() http://selfhtml.teamone.de/javascript/objekte/node.htm#append_child oder einfach replaceChild() http://selfhtml.teamone.de/javascript/objekte/node.htm#replace_child

    Zudem könntest du den Link "unkenntlich" machen, entweder mit dem DOM oder über das link-Objekt: http://selfhtml.teamone.de/javascript/objekte/links.htm. Dies ist aber imho nicht nötig, wie ich im folgenden Absatz darlegen werde.

    Eine andere Möglichkeit wäre, mit style.visibility='false' die Buttons zu verstecken... wie du möchtest und wie es in deinem Dokument am besten passt. Bitte achte aber auch darauf, dass die Benutzer bei einer heterogenen Zielgruppe durchaus JavaScript deaktiviert haben können, Suchmaschinen werden dir auch einen Strich durch die Rechnung machen können.

    und so kein weiteres script ausgeführt werden kann, was vorher der fall gewesen wäre.

    Dazu würde ich dir vorschlagen, schlichtweg eine globale booleansche Variable zu setzen, welche enthält, ob die Funktion schon ausgeführt wurde oder nicht. Beim ersten Ausführen wird der Variable true zugewiesen und beim erneuten Aufruf wird auf diese geprüft und ggf. unverrichteter Dinge beendet. Das sähe vereinfacht dann so aus:

    Im head-Element:

    <script type="text/javascript">
      ausgefuehrt=false; // oder ein aussagekräftiger Variablenbezeichner *g*
      function murks () {
       if (!ausgefuehrt) {
        /* ...Nutzlast... */
        /* ...Wechsle Bilder oder schalte Links aus oder verstecke sie, wie auch immer... */
        ausgefuehrt=true;
       }
      }
      </script>

    Im body (bzw. ein einem Blockelement im body-Element):

    <a href="...URL..." onclick="murks(); return false"><img ... /></a>

    ("return false" natürlich nur, wenn die href-URL nicht nach dem Funktionsaufruf annavigiert werden soll...)

    Grüße,
    Mathias