Ошибка JQuery только в IE11 - синтаксическая ошибка Foreach (якорь) - PullRequest
0 голосов
/ 30 ноября 2018

Я использую этот код, но он содержит ошибки в 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 голосов
/ 30 ноября 2018

Вы можете попытаться изменить свой код, как показано ниже:

<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 ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...