jQuery仅在IE11上出现错误-语法错误Foreach(anchor)

时间:2018-11-29 21:01:02

标签: jquery internet-explorer

我正在使用此代码,但在IE11中出错。它在包括IE Edge在内的所有其他浏览器上似乎都可以正常工作。怎么了?

document.querySelectorAll('a[href^="#"]').forEach(anchor => {
    anchor.addEventListener('click', function (e) {
        e.preventDefault();

        document.querySelector(this.getAttribute('href')).scrollIntoView({
            behavior: 'smooth'
        });
    });
});

在控制台上,此行出现语法错误:

forEach(anchor => 

1 个答案:

答案 0 :(得分:1)

您可以尝试如下修改代码:

<a href="#top" data-value="linkA"> Link A</a><br />
<a href="#middle" data-value="linkB"> Link B</a><br />
<a href="#bottom" data-value="linkC"> Link C</a><br />

<div id="top" style="width:100%; height:600px; background-color:antiquewhite">
    Top
</div>
<div id="middle" style="width:100%; height:600px; background-color:aqua">
    Middle
</div>
<div id="bottom" style="width:100%; height:600px; background-color:aquamarine">
    Bottom
</div>
<script type="text/javascript">
    var forEach = Array.prototype.forEach;
    var anchors = document.querySelectorAll('a[href^="#"]');
    forEach.call(anchors, function (anchor) {
        anchor.addEventListener('click', function (e) {
            e.preventDefault();
            //get the a tag attribute.
            alert(e.srcElement.getAttribute("data-value"));
            //document.querySelector(e.srcElement.getAttribute('href')).scrollIntoView({
            //    behavior: 'smooth'
            //});
        });

    });
</script>

类似于this的输出(在IE,Chrome和Edge上运行良好)。

此外,请检查您的代码,如果要获取锚点事件中的属性,则应使用'e.srcElement.getAttribute()'方法。