2017-08-21 14 views
0

リンクが選択された後、色を変更します。色は変化していますが、選択したページがレンダリングされるとデフォルトの色に戻ります。私は、メイン(接触)の.phpファイルが、同じ内のコードを入れて試してみたページがレンダリングされた後にハイパーリンクのテキストの色を変更します。

<div class="navBar"> 
     <a class="aNavBar" href="index.php">Home</a>  <a class="aNavBar" href="about.php">About</a>  <a class="aNavBar" href="galleries.php">Gallery</a>  <a class="aNavBar" href="equipment.php">Equipment</a>  <a class="aNavBar" href="links.php">Links</a>  <a class="aNavBar" href="contact.php">Contact</a> 
    </div> 

    <script> 
     $(document).ready(function() 
     { 
      $('.navBar a').click(function() 
      { 
       var href = $(this).attr('href'); //location.href; 
       alert(href); 
       $(this).addClass('selected'); 
      }); 
     }); 
    </script> 

:選択が行われる

<!DOCTYPE html> 
<html> 

<?php 
    $Page = "Contact"; 

    include 'header.php'; 
?> 

<body> 

    <?php 
     include "facebook.php"; 
    ?> 

    <?php 
     include "headers.php"; 
    ?> 

    <?php 
     include "navBar.php"; 
    ?> 

    <?php 
     include "containers.php"; 
    ?> 

    <?php 
     include "footer.php"; 
    ?> 

</body> 

</html> 

ナビゲーションバー:

PHPページは次のようになります事が起こっている。

+3

これは予期された動作です。 DOMの変更はページの読み込み間では保持されません。状態を保存したい場合は、情報をどこかに(サーバーデータベース、ローカルストレージ、セッション、クッキーなど)保存し、その状態を取得して、将来ロードする各ページに適用する必要があります。 –

+0

現在のページにリンクしているメニュー項目を強調表示したいだけなら、どこにでも "追加"情報を保存する必要はありません。その情報は既に$ _SERVERに含まれています。いくつかの研究を行ってください、これはまったく新しいトピックではありません。 https://www.google.com/search?q=php+menu+highlight+current – CBroe

+0

通常、単純な解決策は、選択されたメニュー(クリックされたもの)を、クリックされたリンク(get変数として)に渡すことです。その後、PHPを介してそのメニュー項目にCSSクラスを設定します。 – xander

答えて

0

は、単にページ状態は、ページのリロードや変更後に永続化されていない、入れた状態

<a class=<?php ($page == index.php) ? echo "aNavBar selected" : echo "aNavBar"; ?> href="index.php">Home</a> 
+0

上記のコードはnavBar.phpファイルにあるはずですか?私はそれを試して、それは動作しません。 – rkamarowski

+0

はい、navBar.phpではjqueryコードを削除してそこにクラスを追加してください。 '$ page'をチェックして、ページと比較して同じ値を返すようにしてください –

0

htmlで定義されたリンクは、クリックされた場合でも標準色を持ちます。リンクがクリックされた場合の定義は、ブラウザキャッシュです。選択されていることが確認されると、ページがロードされるとこの情報は保持されません。このリンクのクリックをユーザの履歴に保存するのは面白いかもしれません。ブラウザを使ってはできないからです。また、次のように

$path = $_SERVER['PHP_SELF']; // will return http://test.com/index.php for our example 
$page = basename($path); // will return index.php 

これを行うことができます

0

を置きます。したがって、2ページ目が読み込まれたときに、選択されたハイパーリンクが「選択済み」のままになるとは限りません。あなたはプログラム的にかかわらず、それを行うことができます。

このような何か:

<div class="navBar"> 
    <a class="aNavBar<?php if(strpos($_SERVER['PHP_SELF'], 'index.php')!==false) echo ' selected'; ?>" href="index.php">Home</a>  <a class="aNavBar" href="about.php<?php if(strpos($_SERVER['PHP_SELF'], 'about.php')!==false) echo ' selected'; ?>">About</a> 
0

次働い:あなたの助けを

<? 
      $path = $_SERVER['PHP_SELF']; // will return http://test.com/index.php for our example 
      $page = basename($path); // will return index.php 
     ?> 
     <a class="aNavBar" <? if($page == "index.php") echo "style='color:red'";?> href="index.php">Home</a> 

感謝を!

関連する問題