Alex Wilde: onclick, onmouseover nachträglich hinzufügen

Hallo,

ich möchte einem Element nachträglich noch ein onclick und onmouseover Ereignis für einen Tooltip hinzufügen. Dabei sollen die alten Ereignis bestehen bleiben. Mit element.onclick += function() { ... } haut das ganze leider nicht hin.
Ich denke mal, sowas müßte schon einmal gelöst worden sein, ich kann aber leider nichts lösendes dazu finden. Hat von Euch jmd. eine Idee?

Danke
Alex

  1. Hallo Alex,

    probiere es bitte so: element.onclick=function(){alte_Funktion();neune_Funktion()}

    Gruß aus Berlin!
    eddi

    --
    wahsaga (http://forum.de.selfhtml.org/archiv/2004/9/90932/#m546295)
    > vielleicht könnte man für heteros eine "strict"-DTD zu grunde legen [...oder...] eine darauf anwendbare CSS-eigenschaft 'sex'
    In dem Sinne: Ein -Hoch- auf die Liebe zwischen Menschen! ;)
    1. probiere es bitte so: element.onclick=function(){alte_Funktion();neune_Funktion()}

      also ich habe ein wenig herumprobiert und denke dass dieser Lösungsansatz nicht funktioniert oder sehr umständlich werden kann. Das Problem liegt darin, die "alte Funktion" des onClick Ereignisses auszulesen bzw. in die neue Kombination einzubinden... es sind keine Strings also kann ich nicht mit RegExps arbeiten und ansonsten kenne ich keine Wege einen neuen onClick zu generieren.

      Gruß aus Berlin!
      eddi

      ebenfalls Grüße aus Berlin

      1. gruss Alex,

        ... Das Problem liegt darin, die "alte Funktion" des onClick Ereignisses
        auszulesen bzw. in die neue Kombination einzubinden...

        Struppi hat sich dazu ja schon geaeussert -
           https://forum.selfhtml.org/?t=95368&m=578477

        ansonsten kenne ich keine Wege einen neuen onClick zu generieren.

        in den zur zeit gaengigsten browsern stehen Dir dafuer die methoden
           "addEventListener" (z.b.: mozillas) bzw. "attachEvent" (msie,opera)
           zur verfuegung  -  aufklaerung erfolgt anhand eines arbeitsbeispiels:

        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
        <html>

        <head>
            <title>addEventListener.html</title>
            <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
            <meta http-equiv="content-script-type" content="text/javascript">
            <script type="text/javascript">
              function linkOver(linkObj) {
                window.top.status = "mouseover: " + ((linkObj.text) ? (linkObj.text) : ((linkObj.innerText) ? (linkObj.innerText) : (linkObj)));
                return true;
              }
              function linkOut(linkObj) {
                window.top.status = "mouseout: " + ((linkObj.text) ? (linkObj.text) : ((linkObj.innerText) ? (linkObj.innerText) : (linkObj)));
                return true;
              }
              function linkClick(linkObj) {
                alert("click: " + ((linkObj.text) ? (linkObj.text) : ((linkObj.innerText) ? (linkObj.innerText) : (linkObj))));
                return false;
              }

        function additionalLinkClick() {
                alert("document.links.length = " + document.links.length);
              }
              var addClickEvents;

        if (window.attachEvent) { // msie, opera;

        alert("window.attachEvent");
                addClickEvents = function() {
                  for (var i=0; i<document.links.length; ++i) {
                    document.links[i].attachEvent("onclick",additionalLinkClick);
                  }
                };
                window.attachEvent("onload",addClickEvents);

        } else if (window.addEventListener) { // mozilla;

        alert("window.addEventListener");
                addClickEvents = function() {
                  for (var i=0; i<document.links.length; ++i) {
                    document.links[i].addEventListener("click",additionalLinkClick,true);
                  }
                };
                window.addEventListener("load",addClickEvents,true);
              }
            </script>
          </head>

        <body>
            <p>
              <a href="#" onmouseover="return linkOver(this)" onmouseout="return linkOut(this)" onclick="return linkClick(this)">link 01</a><br>
              <a href="#" onmouseover="return linkOver(this)" onmouseout="return linkOut(this)" onclick="return linkClick(this)">link 02</a><br>
              <a href="#" onmouseover="return linkOver(this)" onmouseout="return linkOut(this)" onclick="return linkClick(this)">link 03</a><br>
            </p>
          </body>

        </html>

        by(t)e by(t)e - peterS. - pseliger@gmx.net

        --
        ie:( fl:) br:> va:| ls:& rl:| n4:} ss:} de:µ js:} zu:]
  2. ich möchte einem Element nachträglich noch ein onclick und onmouseover Ereignis für einen Tooltip hinzufügen. Dabei sollen die alten Ereignis bestehen bleiben. Mit element.onclick += function() { ... } haut das ganze leider nicht hin.

    onclick erwartet "eine" Referenz auf eine Funktion, es ist kein string.

    Du kannst diese aber evtl. auslesen:

    var old_func = element.onclick;

    element.onclick = function()
    {
        deine_neue_funktion();
        if(old_func) old_func();
    };

    Struppi.