我正在使用此代码,但在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 =>
答案 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()'方法。