javascript - 如何在导航菜单栏中显示用户所在的页面?

标签 javascript html css

<分区>

我正在创建一个静态网站。我想显示当前选项卡用户正在以不同的颜色查看(除了正常的导航菜单选项卡)。如何在不使用任何服务器端脚本的情况下执行此操作?

提前致谢。

最佳答案

这取决于你如何组织你的逻辑......例如,如果你有前端 Controller 并且你得到当前页面应该通过 GET 参数显示(page)你可以:

PHP

$current = $_GET['page'];
print '<ul class="menu">';
while ($page = $pages->getNext()) {
   $label = $page->getLabel();
   if ($page->getName() === $current) {
      print '<li class="menu-item selected">' . $label . '</li>';
   } else {
      print '<li class="menu-item">' . $label . '</li>';
   }
}
print '</ul>';

正如您在脚本中看到的,我们根据这是否是当前页面打印不同类型的列表项。如果这是当前页面,我们的列表项有类 selectedmenu-item 否则它只是一个菜单项。

如果你想从前端做同样的事情,你可以使用以下方法:

JavaScript

   var menuItems = {
       'info': {
           'label': 'Info',
           'id': 'info-item'
        },
       'home': {
           'label': 'Home',
           'id': 'home-item'
        }
   };
   //...
   function getCurrentPage() {
       var str = window.location.search.replace('?', ''),
           params = str.split('&');
       for (var i = 0; i < params.length; i += 1) {
           var current = params[i].split('=');
           if (current[0] === 'page') {
              return current[1];
           }
       }
       return undefined;
   }
   //...
   var page = getCurrentPage();
   clearCurrentPage();
   setCurrentPage(page);

   //...

   function setCurrentPage(page) {
      var item = pages[page];
      document.getElementById(item.id).className += ' selected';
   }

   function clearCurrentPage() {
      var selected = document.getElementsByClassName('selected');
      for (var i = 0; i < selected.length; i += 1) {
          selected[i].className = selected[i].className.replace(' selected', '');
      }
   }

关于javascript - 如何在导航菜单栏中显示用户所在的页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15023252/

上一篇:java - 更改 Accordion 图标和位置 JavaFX

下一篇:javascript - Sencha 2.0 标题栏与选择所有范围区域重叠

相关文章:

javascript - 使用 create-react-app 时如何获取 electro.js 文件的 typescript

javascript - 如何使用 mongoose 更新 MongoDB 中的数组?

javascript - 更新 forEach 数组时,AWS SDK S3 在 forEach 内调用

php - 根据 php session 属性更改 HTML 菜单栏?

html - 使用 flexbox 如何在 div 下居中文本

javascript - 如何使下拉列表选择更新网页上的图像?

javascript - 如何从 JSON 字符串中检索多个属性值

php - 使用 PHP 和 Bootstrap 显示 sql 表中的行信息

html - CSS 100% - 300 像素?

php - CSS/JS 中的动态 URL