martin2: Text eines Links bei onclick ändern

Hallo,

ich möchte den Text eines Links per JS ändern.
Am Anfang sieht mein Link so aus:

<a href="#" onclick="toggleCation(this.id)" id="hilfelink">Hilfetext anzeigen</a>

Nach einem Klick soll sich das "Hilfetext anzeigen" in ein "Hilfetext verbergen" ändern. Dazu steht in toggleCation(link_id) folgende Zeile:

var link = document.getElementById(link_id).text;
link = "Hilfetext verbergen";

Leider klappt das nicht so recht... Wenn ich mir mit einem alert(link) den Inhalt von link anzeigen lasse, kommt "Hilfetext anzeigen" - der richtige Inhalt ist also schon mal da. Nur geändert wird er nicht...

Weiß jemand, was da schief geht?

Grüße,
Martin

  1. hi,

    Nach einem Klick soll sich das "Hilfetext anzeigen" in ein "Hilfetext verbergen" ändern. Dazu steht in toggleCation(link_id) folgende Zeile:

    var link = document.getElementById(link_id).text;
    link = "Hilfetext verbergen";

    Ein Link hätte zwar eine Eigenschaft text, wenn auch nicht im IE - aber so geht es nicht, weil du dir mit {elementreferenz}.eigenschaft nur den Wert der Eigenschaft holst, aber keine Referenz auf diese Eigenschaft (Objekte werden in Javascript immer per Referenz übergeben, einfache, "skalare" Werte jedoch "by value").

    Du müsstest also den Wert schon direkt der Eigenschaft zuweisen,
    document.getElementById(link_id).text = "Hilfetext verbergen";
    oder aber dir zunächst nur die Referenz auf den Link holen, und dann über diese auf seine Eigenschaft zugreifen:

    var link = document.getElementById(link_id);
    link.text = "Hilfetext verbergen";

    Aber da das im IE sowieso nicht gehen dürfte, greifst du besser auf den Textknoten, der das erste (und in deinem Beispiel einzige) Kindelement des Links darstellt (firstChild) zu, und weist dessen Eigenschaft data den neuen Inhalt, den dieser Textknoten haben soll, zu.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Aber da das im IE sowieso nicht gehen dürfte, greifst du besser auf den Textknoten, der das erste (und in deinem Beispiel einzige) Kindelement des Links darstellt

      Einfache Alternative:
      document.getElementById(link_id).innerHTML = "Hilfetext verbergen";

      1. Moin

        Einfache Alternative:
        document.getElementById(link_id).innerHTML = "Hilfetext verbergen";

        Was ist daran ernsthaft einfacher als:

        document.getElementById(link_id).firstChild.data = "Hilfetext verbergen";

        Gruß
        rfb

        --
        Man kann einen Menschen nichts lehren, man kann ihm nur helfen, es selbst zu entdecken.
        (Galileo Galilei)