【问题标题】:Javascript + dynamic menu + current link style (CSS) + PHP based siteJavascript + 动态菜单 + 当前链接样式 (CSS) + 基于 PHP 的站点
【发布时间】:2012-09-04 18:24:38
【问题描述】:

这是我的设置:

我有一个使用动态包含的模块化网站。主页面需要标题。主页仅负责从网站上的特定链接呈现内容。因此,指向 CSS 和 js 文件的外部链接位于主页的头部,而内容页面是 (php) 文档片段,旨在作为内容包含在主页中。

在客户端,我希望我的菜单使用 Javascript 动态运行。我已经使用 CSS 来设置 :hover:active:visited 伪类的样式。我定义了两个与活动和非活动按钮相关的单独类。我编写了 js,为链接设置了 onclick 事件,并外部链接了脚本。

问题

Firebug 正在检测脚本,但是当我单击链接时,该功能不会触发。

代码

带有内联函数调用的 HTML 菜单元素:

 <ul>
        <li class="navLnk"><a href="mylinks.php" tabindex="2" accesskey="2" onclick"asgnActv(this)">BANDS</a></li>
        <li class="navLnk"><a href="mylinks.php" tabindex="3" accesskey="3" onclick"asgnActv(this)">RELEASES</a></li>
 </ul>

Javascript 函数:

function asgnActv(e){
if (e.className == 'navLnk') {
    $lnkArr = document.getElementsByClassName('actvLnk');
    for (i=0; i<$linkArr.length; i++) {
        $linkArr[i].className = 'navLnk';
    }
    e.className = 'actvLnk';
  }
}

主php页面头部的外部js链接:

<script type="text/javascript" src="script.js"></script>

【问题讨论】:

  • 您缺少= 符号:onclick=
  • 不要使用侵入性的onclick属性元素,全部在脚本中完成[jQuery会在这方面为你节省大量时间]。
  • 如果这就是我错过的一切!...哦,天哪...
  • @moonwave99 你能举个例子吗?
  • 啊,首先 - 如果您单击链接,您将转到 mylinks.php 并且页面将重新加载,因此您的脚本将毫无用处。如果您希望当前部分具有不同的类,请在服务器端进行。

标签: php javascript html css dynamic


【解决方案1】:

我猜有两个错误,一个是@Joseph 提到的缺少“=”符号,并且在 js 代码中您正在检查它的 className,而这个类“navLnk”被定义为其父元素,即&lt; li &gt;

因此,如果您希望将其用于 li 元素,请指定要锚定元素的类或使用下面的脚本

function asgnActv(e){
   if (e.parentNode.className == 'navLnk') {
     $lnkArr = document.getElementsByClassName('actvLnk');
     for (i=0; i<$linkArr.length; i++) {
       $linkArr[i].className = 'navLnk';
     }
     e.parentNode.className = 'actvLnk';
   }
}

希望这会有所帮助。

【讨论】:

  • 这是完美的。我唯一没有做的另一件事是预测它们是否都处于活动状态。我也得检查一下!谢谢!我很高兴它是如此简单。
猜你喜欢
  • 2015-08-07
  • 2011-07-16
  • 2018-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-11
  • 1970-01-01
相关资源
最近更新 更多