Hans: Parameter an Eventhandler übergeben

Hallo!

Wie kann man das Event-Objekt innerhalb eines mit

objekt.onmousemove = tuwas;

registrierten Eventhandlers übergeben (ich weiß, so wird es automatisch übergeben, ich will aber weitere Parameter übergeben).

Ich habe es so versucht:

window.onload=init;

function init()
{

document.getElementById('divtest').onmousemove =
  function()
  {
    tuwas(event, 'Ein Text von divtest');
  };
}

Der Parameter 'Ein Text von divtest' wird korrekt übergeben, bei event sagt der Interpreter "event is not defined". Wenn die Funktion tuwas mit einem HTML-Attribut onmouseover="tuwas(event, 'Ein Text von divtest')" aus dem Markup heraus aufgerufen wird, steht das Event-Objekt zur Verfügung.

  1. Hallo,

    Hallo!

    Wie kann man das Event-Objekt innerhalb eines mit

    objekt.onmousemove = tuwas;

    registrierten Eventhandlers übergeben (ich weiß, so wird es automatisch übergeben,

    Ja, es wird automatisch an die Funktiuon mit dem Bezeichner tuwas übergeben. Diese muss es aber auch annehmen, so z.B.:

    function tuwas(evt) {
    ...
    }

    ich will aber weitere Parameter übergeben).

    Ich habe es so versucht:

    window.onload=init;

    function init()
    {

    document.getElementById('divtest').onmousemove =
      function()
      {
        tuwas(event, 'Ein Text von divtest');
      };
    }

    Hier wird das Event-Objekt automatisch an die anonyme (namenlose) Funktion function() übergeben.

    Diese muss es aber auch annehmen, so z.B.:

    document.getElementById('divtest').onmousemove =

    function(evt)

    {

    evt = evt || window.event;
           tuwas(evt, 'Ein Text von divtest');

    };
    }

    viele Grüße

    Axel

    1. Hier wird das Event-Objekt automatisch an die anonyme (namenlose) Funktion function() übergeben.

      Diese muss es aber auch annehmen, so z.B.:

      Das tut sie ja

      function tuwas(event, text)
      {
      }

      Aus HTML heraus funktioniert die Funktion.

      Hier der gesamte Quelltext:

      <script>

      window.onload=init;

      function init()
      {

      document.getElementById('divtest').onmousemove =
        function()
        {
          tuwas(event, 'Ein Text von divtest');
        };
      }

      function tuwas(event, text)
      {
        alert ("Eine Event-Eigenschaft: " + event.pageX);
        alert ("Ein weiterer Parameter: " + text);
      }

      </script>

      <div id="divtest">Irgendein Div</div>

      <div onmousemove="tuwas(event, 'Ein Text von einem Div per Attribut')" style="margin-top:200px">Ein anderes Div</div>

      Wenn man

      document.getElementById('divtest').onmousemove =
        function()
        {
          tuwas(event, 'Ein Text von divtest');
        };
      }

      durch

      document.getElementById('divtest').onmousemove =
        function()
        {
          tuwas('egal', 'Ein Text von divtest');
        };
      }

      ersetzt, kommt immerhin der zweite Parameter an. Sonst passiert gar nichts, außer daß ein "event is not defined" als Fehler gemeldet wird.

      1. Hallo,

        Hier wird das Event-Objekt automatisch an die anonyme (namenlose) Funktion function() übergeben.

        Diese muss es aber auch annehmen, so z.B.:

        Das tut sie ja

        function tuwas(event, text)
        {
        }

        Nein, hier nimmt die Funktionn tuwas den Parameter event an.

        function init()
        {
        document.getElementById('divtest').onmousemove =
          function()
          {
            tuwas(event, 'Ein Text von divtest');
          };
        }

        Hiernach wird bei onmousemove über #divtest aber die anonyme Funktion function() aufgerufen. Diese muss das Event-Objekt auch als Parameter annehmen.

        function init()
        {
        document.getElementById('divtest').onmousemove =

        function(event)

        {
            tuwas(event, 'Ein Text von divtest');
          };
        }

        viele Grüße

        Axel

        1. Nein, hier nimmt die Funktionn tuwas den Parameter event an.

          Hiernach wird bei onmousemove über #divtest aber die anonyme Funktion function() aufgerufen. Diese muss das Event-Objekt auch als Parameter annehmen.

          function init()
          {
          document.getElementById('divtest').onmousemove =
             function(event)
            {
              tuwas(event, 'Ein Text von divtest');
            };
          }

          Ja, habe dann gesehen, was Du meinst. Trotzdem vielen Dank, da kam ich zunächst nicht drauf.

    2. Hier wird das Event-Objekt automatisch an die anonyme (namenlose) Funktion function() übergeben.

      Diese muss es aber auch annehmen, so z.B.:

      document.getElementById('divtest').onmousemove =
         function(evt)
        {
             evt = evt || window.event;
             tuwas(evt, 'Ein Text von divtest');
        };
      }

      Ich Depp, habe ich gar nicht richtig gelesen. Ja, so ist es logisch und funktioniert es. Vielen Dank!