siggi: var node = createElement("..."); alert(node); Warum leer?

Hallo zusammen,

ich möchte mit Javascript HTML-Elemente erzeugen und die Objektreferenzen an eine Funktion zur weiteren Verwendung weitergeben, so wie ich es z.B. statisch folgendermaßen tun würde:

<a href="javascript:meineFunktion( einObjekt )">klick</a>

Also entsprechend dachte ich mir würde aber funktionieren:

node = document.createElement( 'a' );
       nodeRoot.appendChild  ( node );
       node    .appendChild  ( document.createTextNode ( 'klick' ) );

attr = document.createAttribute( 'href' );
       attr.nodeValue = 'javascript:meineFunktion( ' + einObjekt + ' )';
       node    .setAttributeNode( attr );

Wenn ich mit der Maus auf den Link zeige, steht in den Klammern der Funktion aber nichts. Wenn ich alert( node ) mache, ist dies auch leer. Kann mir jemand sagen, wieso das nicht funktioniert und warum alert( node ) leer ist?

Gruß, siggi

  1. Hi,

    <a href="javascript:meineFunktion( einObjekt )">klick</a>

    ist schonmal falsch. kein Abstand in den Klammern, sonst ist nichts drinnen.
    wo willst du eigentlich 'einObjekt' einbauen?

    Also entsprechend dachte ich mir würde aber funktionieren:

    node = document.createElement( 'a' );
           nodeRoot.appendChild  ( node );
           node    .appendChild  ( document.createTextNode ( 'klick' ) );

    attr = document.createAttribute( 'href' );
           attr.nodeValue = 'javascript:meineFunktion( ' + einObjekt + ' )';
           node    .setAttributeNode( attr );

    bei mir ist zwar 'node' leer, aber der 2. link is da (mit dem Attribut).

    vielleicht hilfts, davidp

    1. Hallo,

      <a href="javascript:meineFunktion( einObjekt )">klick</a>
      ist schonmal falsch. kein Abstand in den Klammern, sonst ist nichts drinnen.

      das ist schonmal falsch. Du darfst in Javascript fast überall Leerzeichen oder Tabs setzen, wo es dir gefällt oder sinnvoll erscheint - außer natürlich innerhalb von Bezeichnern, reservierten Wörtern und zusammengesetzten Operatoren wie += und Konsorten.
      Das ist aber in vielen anderen Programmiersprachen auch so.

      Vielmehr sollte man hinterfragen, warum siggi hier einen Link einsetzt, obwohl er keine Ressource verlinkt. Ein onclick-Handler auf einem beliebigen anderen Element wäre da sinnvoller.

      attr = document.createAttribute( 'href' );
             attr.nodeValue = 'javascript:meineFunktion( ' + einObjekt + ' )';
             node    .setAttributeNode( attr );
      wo willst du eigentlich 'einObjekt' einbauen?

      Ich frage mich hier eher: *WAS* ist einObjekt in diesem Kontext? Ist es wirklich ein Objekt? Dann würde die obige Anweisung den String

      javascript:meineFunktion( [Object] )

      erzeugen, was nicht wirklich sinnvoll aussieht. Wie es richtig heißen müsste, kann ich aber auch erst sagen, wenn ich verstanden habe, was der Beispielcode wirklich machen soll. Bis jetzt erschließt sich mir das nämlich nicht.

      So long,
       Martin

      --
      Ich bin 30. Ich demensiere apokalyptisch.
        (Orlando)
      1. Hallo,

        Vielmehr sollte man hinterfragen

        Vielleicht sollte man es lassen, denn ich halte das eher für Desinformation.

        warum siggi hier einen Link einsetzt, obwohl er keine Ressource verlinkt. Ein onclick-Handler auf einem beliebigen anderen Element wäre da sinnvoller.

        Nein, "auf einem beliebigen anderen Element" wäre um Längen unsinniger und würde nur Nachteile zeitigen!

        Mathias