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');を取得します。aclass を持つすべてのタグを取得したい場合は、mainnavjQuery を使用する必要があると思います。

 $('.mainnav');

また

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