Rambo0815: onkeyup etc. dynamisch zuweisen

wie weise ich einen objekt onKeyUp oder ähnliches zu?

document.getElementById("test").onKeyUp = functionxy("test","100);

ist das so richtig???

  1. wie weise ich einen objekt onKeyUp oder ähnliches zu?

    document.getElementById("test").onKeyUp = functionxy("test","100);

    ist das so richtig???

    Jein.

    Ein Eventhandler erwartet eine Funktionsreferenz, wenn der Rückgabewert der Funktion functionxy() eine solche ist, dann wird die Funktion beim auftreten des Events aufgerufen.

    Struppi.

    1. Hallo,

      document.getElementById("test").onKeyUp = functionxy("test","100);

      ist das so richtig???

      Jein.

      ... ,der Eventname muß in JavaScript klein geschrieben werden und...

      Ein Eventhandler erwartet eine Funktionsreferenz, wenn der Rückgabewert der Funktion functionxy() eine solche ist, dann wird die Funktion beim auftreten des Events aufgerufen.

      Mit freundlichem Gruß
      Micha

    2. wie weise ich einen objekt onKeyUp oder ähnliches zu?

      document.getElementById("test").onKeyUp = functionxy("test","100);

      ist das so richtig???

      Jein.

      Ein Eventhandler erwartet eine Funktionsreferenz, wenn der Rückgabewert der Funktion functionxy() eine solche ist, dann wird die Funktion beim auftreten des Events aufgerufen.

      Struppi.

      wie kann ich dann dem onKeyUp die funktion zuweisen?
      es soll ja dann bei dem erstellten Feld so funktionieren, als hätte ich einfach als Attribut geschrieben

      onKeyUp="functionxy('test','100')";

      1. wie weise ich einen objekt onKeyUp oder ähnliches zu?

        document.getElementById("test").onKeyUp = functionxy("test","100);

        ist das so richtig???

        Jein.

        Ein Eventhandler erwartet eine Funktionsreferenz, wenn der Rückgabewert der Funktion functionxy() eine solche ist, dann wird die Funktion beim auftreten des Events aufgerufen.

        Struppi.

        Bitte lass nur das stehen auf das du antworten möchtest und zitiere nicht komplett.

        wie kann ich dann dem onKeyUp die funktion zuweisen?

        Micha hat's ja schon gesagt, diesen Eventhandler gibt es nicht, der heißt in JS onkeyup

        es soll ja dann bei dem erstellten Feld so funktionieren, als hätte ich einfach als Attribut geschrieben

        onKeyUp="functionxy('test','100')";

        onkeyup = function(e) {
        functionxy('test','100');
        };

        übrigens ist in der Funktion this gleich dem Element, ich nehme an du brauchst den Parameter 'test' gar nicht.

        Struppi.

        1. onkeyup = function(e) {
          functionxy('test','100');
          };

          fantastisch
          danke!

          ich muss mir mal angucken, warum das so ist
          so richtig geschnallt habe ich das noch nicht, warum ich das so ummanteln muss

          wie gesagt: DANKE!!

          1. onkeyup = function(e) {
            functionxy('test','100');
            };

            fantastisch
            danke!

            ich muss mir mal angucken, warum das so ist
            so richtig geschnallt habe ich das noch nicht, warum ich das so ummanteln muss

            Du musst nichts ummanteln, du musst dem Handler eine Funktionreferenz zuweisen. Das was du hier machst ist eine anonyme Funktion (weil sie keinen Namen hat). Es gibt aber auch andere Wege:

            onkeyup = functionxy; // ohne Klammer!
            So kannst aber keinen Parameter übergeben

            3. onkeyup = functionxy('test','100');

            Wenn functionxy() eine Funktionsreferenz zurück gibt.
            function functionxy(p1, p2) {
            return function(e) {
            alert(p1 + '/' + p2);
            }
            }

            Struppi.

            1. Hallo,

              bin mir nicht sicher, ob das hier passt, aber ich hatte ein ähnliches Problem, was mir in Verbindung mit xajax und diesem unsäglichen Browser (wie heißt er denn noch gleich...:)) ziemliches Kopfzerbrechen bereitet hatte.

              Dazu benutze ich jetzt diese Funktion, um mögliche Probleme zu beseitigen:

              function _addEventHandler(element, event, handler) {
               var _tmp, _onevent;
               if (!element || !event )
                return false;
               if (element.addEventListener)   // DOM-konform
                element.addEventListener(event, handler, false);
               else {
                _onevent = 'on'+event;
                if (element.attachEvent)      // IE
                 element.attachEvent(_onevent, handler);
                else {                        // ältere Browser
                 _tmp = element[_onevent];
                 element[_onevent] = typeof _tmp == 'function' ? (function() { _tmp(); handler(); }) : handler;
                }
               }
              }

              die ich folgendermaßen aufrufe:

              _addEventHandler($('openall'),"click",function (){[Funktionsinhalt]})

              Gruß,
              Manu

              --
              Vegetarier essen meinem Essen das Essen weg.
              1. Hallo,

                Und was ist das Problem dabei, was funktioniert nicht, was ist deine Frage? ;)

                Mathias

                1. Falls Du mich meinst: das war eine Lösung für mein Problem: dynamisch einen Event-Handler im IE zu setzen, so dass es auch mit bspw. xajax klappt...

                  Gruß,
                  Manu

                  --
                  Vegetarier essen meinem Essen das Essen weg.
          2. Hi,

            so richtig geschnallt habe ich das noch nicht, warum ich das so ummanteln muss

            schreibst Du

            obj.onkeyup = functionxy('test','100');

            so wird die Funktion functionxy() _jetzt_ ausgeführt und dessen Rückgabe(!) in die onkeyup-Eigenschaft geschrieben. In annähernd 100% aller Fälle möchtest Du die Funktion jedoch ausführen, wenn das keyup-Event feuert; und dazu muss im entsprechenden onkeyup-Handler eine Funktion hinterlegt sein, die _dann_ ausgeführt wird.

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes