• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

linkname ändern

musclebreast

Mitglied
Hallo,

ich würde gerne den linkamen ändern wenn man draufklickt...das funktioniert..mein problem ist, wenn man wieder draufklickt soll der alte linkname da stehen..

bisher habe ich es so:

<a id="link" href="#" onClick="this.innerHTML = 'Schlie&szlig;en';javascript:toggledisplay('second1'); return false;" >&Ouml;ffnen</a>



hat jemand einen tipp für mich wie es gehen könnte?

lg

lara
 
Du hast erstmal einen Fehler in deinem Code. Richtig wäre es so:

HTML:
 <a id="link" href="#" onClick="this.innerHTML = 'Schlie&szlig;en';toggledisplay('second  1'); return false;" >&Ouml;ffnen</a>

Zu deiner Frage:
Das ließe sich mit einer Funktion leichter regeln.

Code:
function changeText( obj, text1, text2 ) {
 if( obj && oldtext && newtext ) {
  var newtext = text1;
  if( obj.innerHTML == text1 )
  {
    newtext = text2;
  }
  obj.innerHTML = newtext;
 }
}
 
Hallo,

danke für die Hilfe....ja ich muss es wohl über eine Funktion tun....vielleicht noch eine kurze Frage...beim Aufruf der Funktion was übergibst du an obj? das leuchter mir noch nicht ganz ein..ich hoffe du bringst mir die erleuchtung?:)

lg
 
Hallo,

entschuldige, dass ich noch einmal so frage. Das ist dein Beispielansatz

Code:
function changeText( obj, text1, text2 ) { if( obj && oldtext && newtext ) {  var newtext = text1;  if( obj.innerHTML == text1 )  {    newtext = text2;  }  obj.innerHTML = newtext; }}

Ich denke dir Variable oldtext brauchen wir nicht in der Abfrage oder...beim ersten durchlauf wird auch nie die Variable newtext belegt...was heisst er würde nie in die If-Anweisung gehen. Ich habe es mal so geändert:


function changeText( obj, text1, text2 ) { if( obj && newtext ) { var newtext = text1; if( obj.innerHTML == text1 ) { newtext = text2; } obj.innerHTML = newtext; }else newtext = text2;}




Aufruf wäre dieser:

<a id="link" href="#" onClick="toggledisplay('first1');changeText(document.getElementById('test'),'&Ouml;ffnen','Schlie&szlig;en'); return false" >&Ouml;ffnen</a>

Das ich das Objekt als ersten Parameter übergeben muss ist klar...bisher habe ich es immer direkt im Elemnt mit this gemacht. Heisst in diesem Falle müsste ich document übergeben?
Ich hoffe ihr könnt mir nochmal helfen...habe die halbe naht dran gesessen aber an ein par Punkten hängt es noch.


Gruss

Lara
 
Zuletzt bearbeitet:
Hast recht. Ich hab den Code erst geschrieben und dann überarbeitet. So wäre es korrekt:

Code:
function changeText( obj, text1, text2 ) {
 if( obj && text1 && text2 ) {
  var newtext = text1;
  if( obj.innerHTML == text1 )
  {
    newtext = text2;
  }
  obj.innerHTML = newtext;
 }
}

Dein Aufruf ist nicht richtig, wenn Du damit den Text ändern willst. So wäre es richtig (Stichwort this nochmal):
HTML:
 <a id="link" href="#"  onClick="toggledisplay('first1');changeText(this,'&Ouml;ffnen','Schlie&szlig;en');  return false" >&Ouml;ffnen</a>

Und bitte verwende im Forum Codetags, damit sieht der Code gleich viel lesbarer aus.
 
Ich würde auf Inline-Event-Handler nach Möglichkeit verzichten.

HTML:
<!DOCTYPE html>

<html lang="en">

    <head>
        <meta charset="UTF-8" />
        <title>Demo</title>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
        <script>
            /*<![CDATA[*/

$(function () {
    $('#link').toggle(function (event) {
        $(this).html('Schließen');
    }, function (event) {
        $(this).html('Öffnen');
    });
});
            /*]]>*/
        </script>
    </head>

    <body>
        <a id="link" href="http://www.html.de/">Öffnen</a>
    </body>

</html>
 
Zurück
Oben