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

Aktiven div Klasse zuweisen

landpat

Neues Mitglied
Hallo,

ich habe eine Navigationsstruktur, die wie folgt aufgebaut ist:

HTML:
<div class="menu">
    <ul>               
        <li>
            <div class=active>
                <a href="index.php" title="Home">Home</a>
            </div>
             </li>
    <ul>               
        <li>
            <div class=inactive>
                <a href="kontakt.php" title="Kontakt">Kontakt</a>
            </div>
             </li>
</div>

Ich möchte die Navi auslagern und muss deshalb per Script den jeweiligen aktiven Navigationspunkt auf "active" setzen. In diesem Fall muss ich also die Klasse des div auf "active" setzen.

Wie kann ich den per JavaScript oder php den jeweils aktiven div ansprechen? Über Hilfe würde ich mich wirklich sehr freuen :).

Danke
 
Werbung:
Hallo landpat,

Du könntest zum Beispiel mit Php die Url (teile davon) abfragen und sie dann abgleichen entspricht die URL einem Menüpunkt fügst du die active class mittels dem echo Befehl ein...
Sobald ich zuhause bin kann ich es dir nochmal detaillierter erklären...

L.G.
Jappi00
 
Das wäre super.

Mit
Code:
basename( $_SERVER['SCRIPT_FILENAME'] )
wird mir ja der Filename ausgegeben.

Ich habe an folgendes gedacht (Pseudocode, bin echt wirklich nicht vertraut mit der Syntax von PHP :()

Code:
<div <?php if ( $_SERVER['SCRIPT_FILENAME'] ) == Inhalt von href then "class=active" else "class=inactive">
<a href="index.php" title="Home">Home</a>
</div>

Wie komm ich an den Inhalt von dem href ran?

Denke ich da richtig, oder zu kompliziert. Gibt es eine elegantere Variante?

Danke für die Hilfe :)
 
Werbung:
Ich glaube es ist umständlich, aber ich habe eine Lösung gefunden.

Code:
<div class="menu">
    <ul>             
        <li>
            <div <?php echo (basename( $_SERVER['REQUEST_URI'] ) == 'index.php') ? ' class="active"' : ' class="inactive"'; ?>>
                <a href="index.php" title="Home">Home</a>
            </div>
             </li>
    <ul>             
        <li>
            <div <?php echo (basename( $_SERVER['REQUEST_URI'] ) == 'kontakt.php') ? ' class="active"' : ' class="inactive"'; ?>>
                <a href="kontakt.php" title="Kontakt">Kontakt</a>
            </div>
             </li>
</div>
 
Hallo landpat,
genau in diese Richtung wollte ich! Wenn die Seite etwas umfangreicher ist würde ich eventuell einen Array oder Objekte verwenden... Ich kann dir leider immer noch keinen Code senden da mein Netzteil heute in den Arsch gegangen ist :(:( Warum verleihst du eigentlich die Inaktiv Class? Was für einen Sinn ergibt die?
 
Hab es mal vor längerem so gelöst:
Ist vielleicht etwas unübersichtlich, aber ist ja auch schon etwas älter
PHP:
<?php $login_adress = $_SERVER['PHP_SELF'];
?>
<nav class="nav">
            <ul>
                <li><a href="Index.php"<?php if ($login_adress == "/Index.php"){echo "class=\"active\"";}?>>Wilkommen</a></li>
               <li><a href="Austattung.php"<?php if ($login_adress == "/Austattung.php"){echo "class=\"active\"";}?>>Austattung</a></li>
                <li><a href="Lage.php"<?php if ($login_adress == "/lage.php"){echo "class=\"active\"";}?>>Lage</a></li>
               <li><a href="Preise.php"<?php if ($login_adress == "/Preise.php"){echo "class=\"active\"";}?>>Preise</a></li>
                <li><a href="Kontakt.php"<?php if ($login_adress == "/Kontakt.php"){echo "class=\"active\"";}?>>Kontakt</a></li>
          </ul>
        </nav>
Schau mal hier, ich hatte mal genau die gleiche Frage ;): https://www.html.de/threads/class-active-beim-includieren-der-seite-anpassen.53831/#post-367481
 
Werbung:
Wenn du nur eine Klasse einfügen willst, dann reicht das hier auch
PHP:
<?php
$navi = '
  <ul>  
  <li><a href="/" title="Home">Home</a></li>
  <li><a href="/kontakt.php" title="Kontakt">Kontakt</a></li>
  </ul>
';
$navigation = str_replace('<a href="'.$_SERVER['REQUEST_URI'].'"','<a class="aktuell" href="'.$_SERVER['REQUEST_URI'].'"',$navi);
echo $navigation;
?>
 
Zurück
Oben