Text eines Links bei onclick ändern
martin2
- javascript
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
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
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";
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