javascript - e.preventDefault() 在 es6 箭头函数循环中不起作用
问题描述
我无法阻止默认在箭头函数中工作。
带有 classList 的 querySelectorAll() 上的 addEventListener
我想用 es6 的方式来做。
var clickers = document.querySelectorAll('.clicker');
clickers.forEach(clicker =>
clicker.addEventListener("click", (e) =>
e.preventDefault();
console.log("i clicked")
)
);
<a href="#" class="clicker">test</a>
<a href="#" class="clicker">test</a>
我收到此错误:
“未捕获的 SyntaxError:缺少)在参数列表之后
JavaScript: SyntaxError: missing ) 在参数列表之后
这不是 es6,所以这个答案还不够
我发现当您删除阻止默认值时它会消失
var clickers = document.querySelectorAll('.clicker');
clickers.forEach(clicker =>
clicker.addEventListener("click", (e) =>
console.log("i clicked")
)
);
<a href="#" class="clicker">test</a>
<a href="#" class="clicker">test</a>
但是行为是当您单击时它会进入页面顶部,或者更确切地说不会阻止默认
我检查了上面的资源,但在特定情况下没有帮助。
你如何解决这个错误?如何防止 es6 箭头函数循环中的默认值?
解决方案
您在箭头函数中的箭头后面缺少花括号。对于多行箭头函数,块需要花括号。
var clickers = document.querySelectorAll('.clicker');
clickers.forEach(clicker =>
clicker.addEventListener("click", (e) => {
e.preventDefault();
console.log("i clicked")
})
);
<a href="#" class="clicker">test</a>
<a href="#" class="clicker">test</a>
推荐阅读
- angular - Angular 6 - httpClient 发布 XML 文件
- spring-boot - Spring Boot 2.0 WebClient 在继续之前处理 404
- javascript - 在元素中查找行,然后用标签包装它
- javascript - 如何计算 CheckSum 8 Xor
- macos - C++:无法读取 macOS 包中的资源文件
- python-3.6 - 将 Vertica 连接为 Django 后端
- android - MediaStore.ACTION_VIDEO_CAPTURE 从 Nohat 设备上的预览屏幕播放录制的视频时应用程序崩溃
- google-translate - 如何使用 google translate api 进行“文字”翻译而不是有意义的翻译?
- c# - 将参考项目升级到 .Net Standard 2.0 后无法编译 UWP 类库
- soapui - 如何获取测试步骤编号并将其打印在脚本日志中