Andi: Link-class ändern

Hallo. Ich habe auf einer Seite eine Navigation, die auf verschiedene Anker verlinkt. Jetzt würde ich es gerne hinbekommen, dass sich die class eines Links ändert (es erscheint dann ein Pfeil vor dem Menüpunkt). Außer Javascript wird es wohl keine andere Möglichkeit geben... Hier der Programmcode:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Unbenanntes Dokument</title>
<link href="../../style/subnav.css" rel="stylesheet" type="text/css">
<script type="text/javascript">
function aktivieren(id)  {
 document.getElementById(id).classname = 'aktiv';
}
</script>
</head>

<body>
<div id="subnav">
<div id="titel">Vision</div>
<div id="nav">
<ul>
<li><a href="vision_content.html" class="normal" onClick="aktivieren('eins')" target="content" id="eins">Gemeinsame Ziele</a></li>
<li><a href="vision_content.html" class="normal" onClick="aktivieren('zwei')" target="content" id="zwei">Technologie &amp; Strategie</a></li>
<li><a href="vision_content.html" class="normal" onClick="aktivieren('drei')" target="content" id="drei">Kein Branchenfokus</a></li>
</ul>
</div>
</div>
</body>
</html>

Hinweis: Die Seite soll mit Frames erstellt werden - kann man leider nix dagegen machen...

Wäre klasse, wenn man mir helfen kann. Danke :)

  1. Hi,

    Hinweis: Die Seite soll mit Frames erstellt werden - kann man leider nix dagegen machen...

    doch: Den dafür Verantwortlichen für verrückt erklären.

    Wäre klasse, wenn man mir helfen kann. Danke :)

    Ja, das wäre klasse. Es wäre auch klassenName. Was es nicht wäre, ist klassenname. Übrigens wünsche ich mir für die Zukunft eine Fehlerbeschreibung - nicht immer ist der Fehler so offensichtlich wie hier.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hallo Cheatah,

      Hinweis: Die Seite soll mit Frames erstellt werden - kann man leider nix dagegen machen...

      doch: Den dafür Verantwortlichen für verrückt erklären.

      Und was bringt das? Ich habe schon viele Postings von dir mit etwa diesem Inhalt gelesen, eigentlich sind das ja fast alle. Du redest über Menschen, die du nicht kennst. Jemand ist noch lange nicht verrückt, nur weil er Frames benutzt. Und wenn der OP sagt, er habe keinen Einfluss auf das, was ihm jemand anders zur Verfügung stellt bzw. vorschreibt, warum kannst du (übrigens nicht _nur_ du) das dann nicht einfach mal akzeptieren.

      Du bist sicher ein intelligenter Mensch, ich schätze dein Fachwissen sehr. Aber das gibt dir noch nicht das recht, so herablassend über dir fremde Menschen zu reden. Ich hätte noch viel extremere Postings deinerseits finden können, die dem Fragenden zwischen den Zeilen ein "du bist so dämlich, ich erklär dir jetzt erstmal die Welt" vermitteln (sollen). MMn hat es niemand verdient, hier so behandelt zu werden, da bildest auch du keine Ausnahme.

      Beste Grüße
      Richard

  2. Hallo Andi,

    <link href="../../style/subnav.css" rel="stylesheet" type="text/css">

    und darin hast du je eine Klasse
    .active {
      background: url(bild-mit-pfeil.png) no-repeat 1px 2px; /* oder so */
      display:block; /* zumindest evtl, haengt davon ab, wie du mit dem Bild hinkommst */
    }
    .normal {
      background: url(bild-ohne-pfeil.png) no-repeat 1px 2px; /* oder so */
      display:block; /* zumindest evtl, haengt davon ab, wie du mit dem Bild hinkommst */
    }
    Das ist nur ein Beispiel, aber so aehnlich sollte das wohl aussehen

    function aktivieren(sender)  {

    // referenz auf das root element des menus
      var menuRoot = document.getElementById('nav');

    // von dort aus alle <a>
      var alleAElemente = menuRoot.getElementsByTagName('a');

    // Jetzt durch alle <a> rauschen
      for(var i = 0; i < alleAElemente.length; i++)
      {
         // setze alle ausser dem Element, das die Funktion gestartet hat auf 'normal'
         alleAElemente[i].className = alleAElemente[i] != sender ? 'active' : 'normal';
      }
      return true;
    }

    <li><a href="..." class="normal"

    onClick="return aktivieren(this)"
                                 ^ hier muss eine referenz auf <a> selbst sein
                                   Deine Funktion returnt true, dadurch dass du 'return funktionsname()' schreibst, wird
                                   der eigentliche Zweck des <a>, naemlich das href auch ausgefuehrt
            target="content"
            ^ Das koennte eigentlich im <head> stehen (<base href>)

    id="eins">
            ^ id ist ok, aber bei dieser loesung unnoetig

    Gemeinsame Ziele </a></li>
                            ^ lass hier einen Space, sonst ist IE dir unter Umstaenden gram

    Gruß,

    Dieter

    1. Hallo Dieter,

      vielen Dank - es klappt :)

      Wegen den Frames: leider wünscht es der Kunde so. Da hab ich dann nichts zu sagen ;)

      Nochmal danke :)

      1. Hello out there!

        Wegen den Frames: leider wünscht es der Kunde so. Da hab ich dann nichts zu sagen ;)

        Wenn dein Kunde Ahnung von Webdesign hätte, würde er es selbst machen, nicht dich beauftragen.

        Also bist du in der Positioin des Fachmanns; es wäre deine Aufgabe, deinem Kunden klarzumachen, dass nicht seine Wünsche entscheidend sind, sondern die von seinen Kunden, den Nutzern seiner Webseite. Und diese haben am Ende unter den Problemen mit Frames zu leiden.

        See ya up the road,
        Gunnar

        --
        “Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)