XaraX: (DOM) - HTML-Elementen Funktionen einhängen

Hallo,

Gurndlage:

Funktionen, die innerhalb eines Dokuments notiert werden,
        sind als Methoden des window-Objekts abrufbar. Gerade in
        einem Frameset kann man sich diese Eigenheit zu nutze
        machen (top.function_name()).

Frage:

Besteht die Möglichkeit einem HTML-Element eine Funktion
        einzuhängen, sodaß sie über beispielsweise
        document.getElementsByTagName('div')[1].function_name()
        aufgerufen werden können; wenn ja - wie?

Gruß aus Berlin!
eddi

--
at, wie er leibt und lebt auf ein Posting
> > Nein, ich denke nicht.
gepromptet
> Das empfiehlt sich aber.
:))))
  1. Hallo,

    Besteht die Möglichkeit einem HTML-Element eine Funktion
            einzuhängen, sodaß sie über beispielsweise
            document.getElementsByTagName('div')[1].function_name()
            aufgerufen werden können; wenn ja - wie?

    Funktionen sind wie du sagst Objektmethoden, und Methoden sind Funktionsobjekte:

    var obj = document.getElementsByTagName('div')[1];
    obj.funktion = function (param) { alert(param); };
    alert(typeof obj.funktion);
    obj.funktion('hallo welt');

    Ob da jeder Browser mitspielt, ist eine andere Frage, vom Prinzip her sollte das anhängen von Objekten an Elementknoten möglich sein.

    Mathias

    1. Hallo molily.

      Da warst du schneller, ich war noch beim Testen :)

      var obj = document.getElementsByTagName('div')[1];
      obj.funktion = function (param) { alert(param); };
      alert(typeof obj.funktion);
      obj.funktion('hallo welt');

      Wie du bereits anmerktest, spielt da nicht jeder Browser mit. Der mir hier zur Verfügung stehende IE 6.0.2600 unter Win98SE verlangt nach all:

      // Zugriff auf das div mit der ID 'Test'
      var meinObj = document.all.test;
      meinObj.funktion = function (param) { alert(param); };
      alert(typeof meinObj.funktion);
      meinObj.funktion('hallo welt');

      Bei der Verwendung von getElementsByTagName bekommst man den Fehler "'undefined' ist Null oder kein Objekt" (die anderen Zugriffsmethoden habe ich nicht getestet).

      Freundschaft!
      Siechfred

      --
      Wissen bedeutet zu wissen, wo es steht.
      1. Hallo,

        var obj = document.getElementsByTagName('div')[1];

        Der mir hier zur Verfügung stehende IE 6.0.2600 unter Win98SE verlangt nach all

        Was mit all adressierbar ist, sollte auch mit getElementsByTagName ansprechbar sein.

        Bei der Verwendung von getElementsByTagName bekommst man den Fehler "'undefined' ist Null oder kein Objekt" (die anderen Zugriffsmethoden habe ich nicht getestet).

        Vorausgesetzt ist bei obigem Code natürlich, dass im Dokument mindestens zwei div-Elemente existieren. Wenn das der Fall ist, klappt es hier bereits im MSIE 5.0.

        Mathias

        1. Hallo und vielen Dank Euch Drein!

          Gruß aus Berlin!
          eddi

          --
          at, wie er leibt und lebt auf ein Posting
          > > Nein, ich denke nicht.
          gepromptet
          > Das empfiehlt sich aber.
          :))))
  2. Hallo,

    Besteht die Möglichkeit einem HTML-Element eine Funktion
            einzuhängen, sodaß sie über beispielsweise
            document.getElementsByTagName('div')[1].function_name()
            aufgerufen werden können; wenn ja - wie?

    Reicht vielleicht dieser Ansatz?

    ...
    <body>
    <p id="bla">Text</p>
    <script language="JavaScript" type="text/javascript">
    <!--

    function hallo(txt)
    {
      alert("Hallo "+txt+"!");
    }

    function summe(x,y)
    {
      alert(x+y);
    }

    var d=document.getElementById("bla");

    d.myfunction1=hallo;
    d.myfunction1("Welt");

    d.myfunction2=summe;
    d.myfunction2(1,2);

    //-->
    </script>
    </body>
    ...

    Ueber eine Schleife lassen sich ggf. auch mehrere Elementobjekte mit Funktionen belegen. Alternative Zuweisung der Funktionen mit function() oder new Function().

    MfG, Thomas