You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用preventDefault阻止页面刷新?请教代码中该方法的放置位置

解决页面刷新问题的方法

你判断的位置完全正确,就是要在hearts.forEach的点击事件处理逻辑里添加preventDefault()。原因是你选中的是<a>标签,这类标签点击后会触发默认跳转行为(哪怕href是空或者设为#,部分浏览器也会导致页面刷新或滚动),所以需要用preventDefault()阻断这个默认动作。

修改后的代码如下:

let navbar = document.querySelector(".navbar");

document.querySelector("#menu-btn").onclick = () => {
    navbar.classList.toggle('active');
}

window.onscroll = () => {
    navbar.classList.remove("active");
}

let hearts = document.querySelectorAll(".icons a");

hearts.forEach(a => {
    a.addEventListener("click", (e)=> {
        e.preventDefault(); // 阻止<a>标签的默认跳转/刷新行为
        a.classList.toggle("color");
    })
})

关键说明:

  • 点击事件的回调函数需要接收事件对象e(也可以命名为event等自定义名称)
  • 在执行样式切换的代码前后调用e.preventDefault()都可以,通常建议放在开头,先阻断默认行为再执行自定义逻辑

内容的提问来源于stack exchange,提问作者JustHarlys

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 10:30:56