【问题标题】:getElementByTagName(a) for autoscrollgetElementsByTagName(a) 用于自动滚动
【发布时间】:2017-03-29 10:49:19
【问题描述】:

我现在拥有的是:

var a = document.getElementsByTagName('a');

我用它来获取所有带有“a”的元素,当我滚动它时,它会自动滚动到下一个“a”元素。

问题在于我也使用链接(使用a href=""),所以有时它会滚动到链接而不是<a name="name"></a>。他们无论如何要解决这个问题吗?喜欢:

var a = document.getElementsByTagName('a name=""');

(这个不行)

如果需要完整代码,我会在下面添加,但可能不需要。

(function () {
    var delay = false;

    $(document).on('mousewheel DOMMouseScroll', function (event) {
        event.preventDefault();
        if (delay) return;

        delay = true;
        setTimeout(function () {
            delay = false
        }, 800);

        var wd = event.originalEvent.wheelDelta || -event.originalEvent.detail;

        var a = document.getElementsByTagName('a');
        if (wd < 0) {
            for (var i = 0; i < a.length; i++) {
                var t = a[i].getClientRects()[0].top;
                if (t >= window.innerHeight * 0.95) break;
            }
        }
        else {
            for (var i = a.length - 1; i >= 0; i--) {
                var t = a[i].getClientRects()[0].top;
                if (t < -window.innerHeight * 0.5) break;
            }
        }
        $('html,body').animate({
            scrollTop: a[i].offsetTop
        }, 800);
    });
})();

【问题讨论】:

    标签: javascript jquery html page-jump


    【解决方案1】:

    您可以将 QuerySelector 用于支持 HTML 5 的浏览器。您可以从 http://caniuse.com/#feat=queryselector 查看它的支持

    QuerySelectorAll

    document.querySelectorAll("a[name='<setname>']");
    

    对于旧浏览器,请使用 Jquery

    $("a[name='<setname>']")
    

    如果您不想设置特定名称,请将其留空。 JQuery 和 HTML 5 querySelector 的选择器相同

    document.querySelectorAll("a[name]");
    

    $("a[name]")
    

    【讨论】:

    • 谢谢document.querySelectorAll("a[name]"); 是我需要的,所以如果你使用namehref 之类的东西,你必须在它周围加上[....]
    【解决方案2】:

    试试querySelectorAll()

    document.querySelectorAll("a[name='examplename']");
    

    找个空的

    document.querySelectorAll("a[name='']");
    

    【讨论】:

    • 我想得到所有a name='',那我该怎么做呢?像a [name='*'] 或类似的东西?抱歉,我刚开始使用 jquery
    • @Minegolfer 与document.querySelectorAll("a[name='']"); 一起使用只需正常空,无需*,请参阅我的更新答案
    • 抱歉,我需要的东西比你早一点,谢谢你的时间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    • 2012-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多