Markus Dillander: Image Button deaktivieren

Hallo

Ein Button schaut bei mir folgendermassen aus:

<IMG
onMouseDown = "src='b dustbin down.bmp'"
onMouseUp = "src='b dustbin focus.bmp'"
onMouseOut = "src='b dustbin.bmp'"
onclick="XMLRequest();"
src="b dustbin.bmp" WIDTH=31 HEIGHT=54 BORDER=0>

Das funktioniert nun mal soweit ganz gut. Jedoch kann auch der Fall auftreten, dass der Button deaktiviert sein soll! D.h. Ich habe eine neue Source fuer das Image und des weiteren soll auch kein XMLRequest bei klicken des Buttons ausgefuehrt werden. Kann mir hier bitte jemand sagen wie ich das onclick event reseten kann in so einem Fall?

Danke und Gruss
Markus

  1. hi,

    Kann mir hier bitte jemand sagen wie ich das onclick event reseten kann in so einem Fall?

    {element}.onclick = "";

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hi

      {element}.onclick = "";

      D.h. ich hole mir das entsprechende Element mit getElementById(element).onclick="";

      Sehe ich das richtige?

      Gruss
      Markus

      PS: Das ist ein Button realisiert mit einem Bild ( fuer Gunnar) :)

      1. hi,

        D.h. ich hole mir das entsprechende Element mit getElementById(element).onclick="";

        Wie du dir eine Referenz auf das Element holst, ist vollkommen schnuppe.
        Seine Eigenschaft onclick willst du dann anschließend überschreiben.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Hi

          D.h. ich hole mir das entsprechende Element mit getElementById(element).onclick="";

          Wie du dir eine Referenz auf das Element holst, ist vollkommen schnuppe.
          Seine Eigenschaft onclick willst du dann anschließend überschreiben.

          Ich habe es nun so probiert, aber leider werden mir hier die Eventhandler nicht ueberschrieben!

          function buttonDisable(imName,status) {
              if (status) {
                document.images[imName].src = toc1dis.src;
                document.images[imName].onMouseDown =  "";
                document.images[imName].onMouseOut =  "";
                document.images[imName].onMouseUp = "";
                document.images[imName].onclick= "";
           }
              else {
          document.images[imName].src = toc1over.src;
                document.images[imName].onMouseDown = "rollPress('toc1',true)";
                document.images[imName].onMouseOut =  "rollPress('toc1',false)"
                document.images[imName].onMouseUp = "rollPress('toc1',false)";
                document.images[imName].onclick= "javascript:alert('test');";
           }
          }

          <img src="b go focus.bmp" class="setact_button" name="toc1">

          Die Bilder wechseln zwar, Eventhandler werden jedoch keine Gesetzt! Eine Idee was das Problem sein koennte?

          Gruss Markus

          1. Ich habe es nun so probiert, aber leider werden mir hier die Eventhandler nicht ueberschrieben!

            JS Eventhandler benötigen eine Referenz auf eine Funktion keinen String.

            Nach wie vor Frage ich mciht warum du Bitmaps verwendest?

            Struppi.

            1. JS Eventhandler benötigen eine Referenz auf eine Funktion keinen String.

              Wie meinst du das mit der Referenz? Koenntest du mir ein kleines Beispiel nennen? BMP verwend ich weil das ganz Zeugs nur lokal laeuft, muss also nix uebers Netz uebertragen werden! Werd aber am Ende wahrscheinlich doch alles in jpg umwandeln ;)

              Gruss
              Markus

              1. Hallo Markus

                JS Eventhandler benötigen eine Referenz auf eine Funktion keinen String.

                Wie meinst du das mit der Referenz? Koenntest du mir ein kleines Beispiel nennen?

                http://jstruebig.de/web/javascript/exp/events.html

                In deinem Falle, da du die Parameter brauchst etwa so:
                onevent = function()
                {
                tu_was(param1, param2);
                };

                Struppi.

                1. Danke Struppi, das haut soweit hin.

                  Jedoch ist es doch ein bisschen umstaendlich wenn ich hier ganz ohne Argumentuebergabe auskommen muss. Gibt es hier wirklich keine Moeglichkeit einen Parameter mitzuuebergeben? Wuerde die Sache ziemlich erleichtern!

                  Danke Gruss
                  M

                  1. Jedoch ist es doch ein bisschen umstaendlich wenn ich hier ganz ohne Argumentuebergabe auskommen muss. Gibt es hier wirklich keine Moeglichkeit einen Parameter mitzuuebergeben? Wuerde die Sache ziemlich erleichtern!

                    Hab ich doch schon geschrieben:

                    In deinem Falle, da du die Parameter brauchst etwa so:
                    onevent = function()
                    {
                    tu_was(param1, param2);
                    };

                    Struppi.

                    1. Hallo

                      Funktioniert nun ganz gut mit der Eventhandlerzuweisung, jedoch diese dann wieder zurueckzusetzen ist leider nicht sooo einfach...

                      Bei mir schaut das nun wie folgt aus:

                      function func() {
                          alert("test");
                          return true;
                      }

                      function onDown()
                      {
                          rollPress(this.name,true);
                          return true;
                      }

                      function onUp()
                      {
                          rollPress(this.name,false);
                          return true;
                      }

                      function onOut()
                      {
                          rollPress(this.name,false);
                          return true;
                      }

                      function buttonDisable(imName,status) {
                          if (status) {
                            document.images[imName].src = toc1dis.src;
                            document.images[imName].onMouseDown = null;
                            document.images[imName].onMouseOut = null;
                            document.images[imName].onMouseUp = null;
                            document.images[imName].onclick = null;
                          }
                          else {
                         document.images[imName].src = toc1over.src;
                         document.images[imName].onmousedown = onDown;
                         document.images[imName].onmouseout = onOut;
                         document.images[imName].onmouseup = onUp;
                         document.images[imName].onclick = func;
                         }
                      }

                      Das Problem liegt hier:
                               document.images[imName].onmousedown = null;

                      Obwohl ich so die Referenz zu der onDown Funktion ueberschreibe, wird mir diese aufgerufen. Auch

                      document.images[imName].onmousedown = "";
                      funktioniert nicht! Hat hier irgendjemand einen anderen Vorschlag wie ich diesen Eventhandler ueberschreiben kann?

                      Cheers
                      Markus

      2. PS: Das ist ein Button realisiert mit einem Bild ( fuer Gunnar) :)

        Markus,
        Für Besucher ohne Bildanzeige oder ohne JavaScript hast du gar nichts realisiert. Und die Besucher müssen auch nicht unbedingt menschlich sein.

        http://www.woodshed.de/publikationen/dialog-robot.html

        Live long and prosper,
        Gunnar

        --
        „Weisheit ist nicht das Ergebnis der Schulbildung, sondern des lebenslangen Versuchs, sie zu erwerben.“ (Albert Einstein)
  2. Markus,
    Wo ist dort ein Button? Das ist nur ein Bild:

    <IMG
    onMouseDown = "src='b dustbin down.bmp'"
    onMouseUp = "src='b dustbin focus.bmp'"
    onMouseOut = "src='b dustbin.bmp'"
    onclick="XMLRequest();"
    src="b dustbin.bmp" WIDTH=31 HEIGHT=54 BORDER=0>

    Das funktioniert nun mal soweit ganz gut.

    Nein, das tut es nicht. Das zwingend notwendige alt-Attribut fehlt; Clients ohne Bildanzeige bekomen gar nichts zu sehen.

    Und für Clients ohne JavaScript hat dieses Bild keinerlei Funktion.

    Wenn du einen Link willst, ist das a-Element dein Freund.

    Live long and prosper,
    Gunnar

    --
    „Weisheit ist nicht das Ergebnis der Schulbildung, sondern des lebenslangen Versuchs, sie zu erwerben.“ (Albert Einstein)
  3. Ein Button schaut bei mir folgendermassen aus:

    Naja, button ist das ja nicht.

    <IMG
    onMouseDown = "src='b dustbin down.bmp'"
    onMouseUp = "src='b dustbin focus.bmp'"
    onMouseOut = "src='b dustbin.bmp'"
    onclick="XMLRequest();"
    src="b dustbin.bmp" WIDTH=31 HEIGHT=54 BORDER=0>

    Was mich wundert ist das du sowas aktuelles wie XMLRequest verwendest und gleichzeitig das für's Internet ungeeigneste und älteste Bildformat das es gibt.

    Ansonten kannst du noch ein onclick Event einfügen und musst in dem Falle einen Wert setzen

    onclick="this.clicked = !this.clicked; if(this.clicked) XMLRequest();"

    Struppi.