# farbe aktiver links beibehalten und nur bei Menüwechsel ändern



## spaceco (8. Mai 2004)

ich habe folgendes problem und habe hier leider keine lösung gefunden.
ich habe mein textmenü mit einer aktiven link farbe versehen (rot, inaktiv ist schwarz). nun soll der aktive link so lange rot bleiben bis ich den nächsten menüpunkt anwähle, dass man dadurch erkennt auf welcher seite man sich befindet. mit dem activelink befehl allerdings wird der link schon wieder schwarz wenn man in einem anderen fenster irgendwas anwählt, da er nun ja nicht mehr aktiv ist. aber ich dennoch keinen anderen menüpunkt aufegerufen hab.
kann man das über ein script lösen oder muss ich mehrere htm. seiten machen, in denen der aktuelle link eben anderst eingefärbt ist
ich hoffe auf unterstützung.

MfG Chris


----------



## IndoorJo (8. Mai 2004)

Ich denke mal, dass Du reine Textlinks genommen hast. Soviel ich weiß, ist das nicht möglich, was Du vorhast. Ich habe sowas mal auf dieser Website mit JavaScript und Grafik-Buttons realisiert. Ich denke, dass sowas die einzige Chance ist, denn auch mit CSS kenne ich da keine vernünftige Lösung.


----------



## Quaese (8. Mai 2004)

Guten Morgen!

Mit JavaScript bekommst Du das hin. Versuch mal das folgende Script:

```
// Erste Komponente: Normale Linkfarbe
// Zweite Komponente: Aktive Linkfarbe
var arrColor = new Array("#505050","darkgoldenrod");

var lnkOldID = "";
var lnkOldColor;

// Objekt-Typ feststellen
IE = document.all&&!window.opera;
DOM = document.getElementById&&!IE;

function activeLink(lnkID){
    // Objekt ermitteln
    myObj = (IE)?document.all[lnkID]:document.getElementById(lnkID);
    // Fall bisher noch kein Link gewählt wurde
    if(lnkOldID == ""){
        lnkOldID = lnkID;  // Akt. ID merken
        lnkOldColor = arrColor[0];  // Akt. Farbe merken
        myObj.style.color = arrColor[1];  // Markier-Farbe zuweisen
    }else{
        // Fall es nicht um den bereits aktiven Link handelt
        if(lnkOldID != lnkID){
            // Objekt ermitteln
            var myOldObj = (IE)?document.all[lnkOldID]:document.getElementById(lnkOldID);
            myOldObj.style.color = lnkOldColor;    // Farbe des alten Links zurücksetzen
            myObj.style.color = arrColor[1];	  // Markier-Farbe des neuen Links setzen
            lnkOldID = lnkID;	   // Akt. ID merken
            lnkOldColor = arrColor[0];  // Akt. Farbe merken
        }
    }
}
```
Dem Script übergibst Du die ID des gedrückten Links. Daraufhin wird die Textfarbe
entsprechend geändert. Die gewünschten Linkfarben kannst Du im Array (arrColor)
angeben.

Das folgende Beispiel verdeutlicht das Aufrufen der Funktion.

```
<a onClick="activeLink('lnk1')" id="lnk1" href="#">Link 1</a>
<a onClick="activeLink('lnk2')" id="lnk2" href="#">Link 2</a>
<a onClick="activeLink('lnk3')" id="lnk3" href="#">Link 3</a>
```
Ciao
Quaese


----------



## spaceco (9. Mai 2004)

ok, das script funktioniert soweit. allerdings habe ich es nur eingebaut und die farben geändert sonst versteh ich es nicht unbedingt [ich bin grafiker kein informatiker :-(...].
allerdings hab ich jetzt folgendes problem damit.
wo kann ich die rollover fabe einstellen. die hab ich im moment noch per style drin stehen. das funktioniert aber nur beim ersten aufrufen der seite. wenn ich einen link mal angewählt hatte und der script gestertet war, funktioniert der normale rollover nicht mehr. wo kann ich denn in dem script die rollover farbe angeben oder wie kann ich einstellen, dass bei anwählen eines anderen links der normale rollober style wieder funktioniert?

die seite soll so aussehen:
einfaches textmenü in schwarz
rolloverfarbe rot.
bei anwählen einer seite im menü soll der link weiter rot bleiben dass ich weiß is bin auf der seite "..."
...bis ich einen anderen der links drücke (wieder mit roten rollover). dann muss dieser dann im rolloverrot verbleiben usw.

hier der link zu meinen versuchen: 


ich weiß stelle warscheinlich ziemlich doofe fragen, aber ich bin bisher immer ohne scripts ausgekommen und das ist koplett neuland für mich (abgesehen davon, dass ich wie ich schon sagte von "informatik" keine ahnung hab)

vielen dank für die antworten


----------



## Quaese (9. Mai 2004)

Hi,

ok, wenn Du mit Rollover-Effekten arbeitest, musst Du das Script leicht ändern.
Suche die Zeile

&nbsp;&nbsp;&nbsp;myOldObj.style.color = arrColor[0];  // Farbe des alten Links zurücksetzen 

und ergänze durch folgende

&nbsp;&nbsp;&nbsp;myOldObj.style.color = "";  // Farbe des alten Links zurücksetzen 

Damit nimmst Du die Textfarbe vom Link. Das setzt voraus, dass die Farbe der
Links als CSS formatiert sind.


```
a:link{color: #000000;}
a:visited{color: #000000;}
a:active{color: #FF0000;}
a:hover{color: #FF0000;}
```

Ciao
Quaese


----------



## spaceco (9. Mai 2004)

wunderbar jetzt funktioniert alles so wies soll.
vielen dank!
bis denn, dann 
chris


----------

