0

这是我的设置:

我有一个使用动态包含的模块化站点。主页面需要标题。主页仅负责从网站上的特定链接呈现内容。因此,指向 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>
4

1 回答 1

1

我想有两个错误一个缺少@Joseph提到的“=”符号,并且在js代码中你正在检查它的className,而这个类“navLnk”被定义为它的父元素,即< li >

所以要工作,要么指定类来锚定元素,要么使用下面的脚本,如果你想要它用于 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';
   }
}

希望这会有所帮助。

于 2012-09-04T18:35:22.290 回答