0

我在使用的这个脚本中发现了一个缺陷;它正在调用全局“a”标签——这让我很生气。

在下面的代码片段中的“a”标签中定义特定类链接的正确方法是什么?

var allLinks = document.getElementsByTagName('.mainnav');

显然这不起作用;要么.mainnav a

完整片段:

var ss = {
  fixAllLinks: function() {
    // Get a list of all links in the page
    var allLinks = document.getElementsByTagName('.mainnav');
    // Walk through the list
    for (var i=0;i<allLinks.length;i++) {
      var lnk = allLinks[i];
      if ((lnk.href && lnk.href.indexOf('#') != -1) && 
          ( (lnk.pathname == location.pathname) ||
        ('/'+lnk.pathname == location.pathname) ) && 
          (lnk.search == location.search)) {
        // If the link is internal to the page (begins in #)
        // then attach the smoothScroll function as an onclick
        // event handler
        ss.addEvent(lnk,'click',ss.smoothScroll);
      }
    }
  },

更新:换出不同的标签后;并尝试使用脚本停止运行的类调用。这是完整的插件;http://www.kryogenix.org/code/browser/smoothscroll/我只想将它与特定的类一起使用,而不是所有的“a”标签。

建议;谢谢。

4

3 回答 3

2

.mainnav不是标签,所以getElementsByTagName不会工作。也许您正在寻找:

var allLinks = document.getElementsByClassName('mainnav');

https://developer.mozilla.org/en-US/docs/DOM/document.getElementsByClassName

或在 jQuery 中:

$('.mainnav');
于 2012-08-09T18:12:09.227 回答
1

我看到你jquery的标签里有。你真的应该使用 jQuery,这使得这更容易做到。搜索 中的所有a标签.mainnav非常简单:$(".mainnav a");.

于 2012-08-09T18:12:51.087 回答
0

document.getElementsByTagName通过标签而不是类获取元素。正确的语法是document.getElementsByTagName('a');,并且会得到所有a的锚标签。我认为如果你想获得所有具有 class 的标签mainnav,那么你需要使用 jQuery:

 $('.mainnav');

或者

 var allLinks = document.getElementsByClassName('mainnav');
于 2012-08-09T18:14:26.747 回答