2017-10-29 6 views
-2

は私navbar.phpファイルすべてのナビゲーションバーリンクでクラスが「アクティブ」になっているのはなぜですか? ALL NAVリンクの属性が「アクティブ」で埋められている理由はここに

<nav class="navbar navbar-inverse navbar-fixed-top"> 
    <div class="container-fluid"> 
    <div class="navbar-header"> 
     <a class="navbar-brand" href="">Pointless?</a> 
    </div> 
    <ul class="nav navbar-nav"> 
<?php 
$active = ""; 
$pages = array("/index.php","/music/index.php","/pong/index.php"); 
if ($_SERVER["SCRIPT_NAME"] == $pages[0]) { 
    $active .= "active"; 
} 
else if ($_SERVER["SCRIPT_NAME"] == $pages[1]) { 
    $active .= "active"; 
} 
else { 
    $active = ""; 
} 
echo "  <li class=\"$active\"><a href=\"/\">Home</a></li>\n  <li class=\"$active\"><a href=\"/music\">Music</a></li>\n  <li class=\"$active\"><a href=\"/pong\">Pong</a></li>"; 
?> 
    </ul> 
    </div> 
</nav> 

で誰もが知っていますか? ifステートメントの変数に追加したので。

また、コードについて変更する必要がある/不要ですか?

+0

あなたはすべて同じアクティブ変数を使用しているため、これが発生しています –

答えて

2

liを作成する前に、値$classをアクティブに設定しています。そういうわけで起こっているのです。

このようにコードを更新することができます。

<nav class="navbar navbar-inverse navbar-fixed-top"> 
    <div class="container-fluid"> 
    <div class="navbar-header"> 
     <a class="navbar-brand" href="">Pointless?</a> 
    </div> 
    <ul class="nav navbar-nav"> 
<?php $url = $_SERVER['REQUEST_URI']; ?> 

<li class="<?php echo $url === '/test.php' ? 'active' : '' ?>"><a href="/">Home</a></li> 
<li class="<?php echo $url === '/music/index.php' ? 'active' : '' ?>"><a href="music">Music</a></li> 
<li class="<?php echo $url === '/pong/index.php' ? 'active' : '' ?>"><a href="pong">Pong</a></li> 
    </ul> 
    </div> 
</nav> 
関連する問題