Robbi: createElement und link()

Hallo,
ich hab folgendes Problem:

ich möchte gerne einen Link mit createElement erzeugen.
Bei der Forumssuche bin ich dann auf folgendes gestossen:

http://forum.de.selfhtml.org/archiv/2003/11/62340/

aber irgendwie will es nicht funzen.
Mein Quelltext sieht so aus:

var schliessen="Schliessen";
var verweis=document.createElement("a");
var machsWeg=document.createTextNode(schliessen.link("javascript:'closeIt();'");
verweis.appendChild(machsWeg);
document.getElementById("id").appendChild(verweis);

Damit wird in Klartext ausgegeben:
<a href="javascrip:'closeIt()';">Schliessen</a>;

Änder ich das createTextNode in createElement erscheint das 'Schliessen' gar nicht mehr... :-((

Was mach ich falsch??

Gruss, Robbi

  1. Hi,

    ich möchte gerne einen Link mit createElement erzeugen.

    var schliessen="Schliessen";
    var verweis=document.createElement("a");

    Jetzt hast Du ein a-Element.

    var machsWeg=document.createTextNode(schliessen.link("javascript:'closeIt();'");

    Hier erzeugst Du erstmal den Link mit href="javascript:'closeIt();'" und Inhalt Schliessen, also
    <a href="javascript:'closeIt();'">Schliessen</a>

    Diesen String machst Du zum Textknoten.

    verweis.appendChild(machsWeg);

    Den erzeugten Textknoten hängst Du in das oben erzeugte a-Element.

    document.getElementById("id").appendChild(verweis);

    Jetzt wird der erzeugte Link in das Element mit id="id" eingehängt.
    Dort steht dann
    <a><a href="javascript:'closeIt();'">Schliessen</a></a>

    (ggf. sind auch die > kodiert)

    Du willst aber dem zuerst erzeugten a-Element

    • einen Textknoten mit Inhalt Schliessen verpassen
    • ein href-Attribut verpassen

    Daß der Inhalt des href-Attributs unsinnig ist, kommt noch erschwerend dazu.
    1. weil anstelle des javascript: im href besser ein onclick wäre
    2. weil der String (!) 'closeIt();' kein wirklich sinnvoller Javascript-Befehl ist. Die '' gehören weg.

    cu,
    Andreas

    --
    MudGuard? Siehe http://www.Mud-Guard.de/
    1. Hallo Andreas,
      erstmal dank für die schnelle Antwort.

      Hi,

      <snip>

      </snip>

      Du willst aber dem zuerst erzeugten a-Element

      • einen Textknoten mit Inhalt Schliessen verpassen
      • ein href-Attribut verpassen

      Genau, und wie mach ich das  mit dem href-Attribut bitte? Da haperts bei mir irgendwie. Habs auch schon probiert mit

      verweis.href=javascript:closeIt();

      hats aber auch nicht getan...

      Daß der Inhalt des href-Attributs unsinnig ist, kommt noch erschwerend dazu.

      1. weil anstelle des javascript: im href besser ein onclick wäre

      ok, muss ich mal versuchen

      1. weil der String (!) 'closeIt();' kein wirklich sinnvoller Javascript-Befehl ist. Die '' gehören weg.

      closeIt() ist eine selbstgeschriebene Funktion, die aufgerufen werden soll. Trotzdem die '' wegmachen?

      cu,
      Andreas

      Gruss, Robbi

      1. Hi,

        Genau, und wie mach ich das  mit dem href-Attribut bitte? Da haperts bei mir irgendwie. Habs auch schon probiert mit

        createAttribute (oder so ähnlich)

        1. weil der String (!) 'closeIt();' kein wirklich sinnvoller Javascript-Befehl ist. Die '' gehören weg.
          closeIt() ist eine selbstgeschriebene Funktion, die aufgerufen werden soll. Trotzdem die '' wegmachen?

        Willst Du den _String_
        'closeIt();'
        oder den Funtionsaufruf
        closeIt();
        ausführen?

        cu,
        Andreas

        --
        MudGuard? Siehe http://www.Mud-Guard.de/
        1. Hi,
          wahrscheinlich bin ich wohl zu blöd dazu...
          nix geht, gar nix,
          ich hab mittlerweile so an die 40 Kombinationen durch
          und entweder kommt gar nix oder das Wort Schliessen ohne link oder der Klartext des Links, ich werd gleich wahnsinnig, kann doch nicht so schwer sein...

          createAttribute (oder so ähnlich)

          alles mögliche hab ich versucht, createAttribute, setAttribute, setAttributeNode und alles was sonst noch in SelfHTML steht, niente...

          Willst Du den _String_
          'closeIt();'
          oder den Funtionsaufruf
          closeIt();
          ausführen?

          Letzteres

          cu,
          Andreas

          Gruss, Robbi

          1. Ich kann die zwar bei deinem Problem nicht wirklich weiterhelfen, aber ich hab das gleiche Anliegen gehabt und hab hab einen Thread dazu aufgemacht, "Link mit insertAdjacentHTML oder createElement einfügen" heißt der glaub ich, da hat jemand eine Funktion dazu gepostet!

            --
            life's for the living. so check me tomorrow [Matthew Good Band]
          2. Hallo,

            so gehts:

            ...
            <script type="text/javascript">
            function start() {
             var feld=document.getElementById("lnk").firstChild ; // Hier soll der Link hin
             var text=document.createTextNode("DynLink") ;        // Der verlinkte Text
             var link=document.createElement("a") ;               // Der A-Knoten
              link.href="javascript:alert('Dynamischer Link')" ;  // Das Ziel
              link.appendChild(text) ;                            // Text in den A-Knoten hängen
              document.getElementById("lnk").replaceChild(link,feld) ; // Text durch Link ersetzen
            }
            </script>
            </head>
            <body onload="start()">  // Wichtig: Script darf erst laufen, wenn DIV existiert!
            <div id="lnk">Ohne JS kein Link!</div>
            </body>
            ...

            Gruß, Jürgen

  2. Hallo,
    Dank an alle, hab das Problem dann letztendlich in den Griff bekommen, nach zähem Ringen.

    Gruss, Robbi