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

JavaScript移除font-weight事件监听失效问题求助

解决点击Bold按钮切换粗体/取消粗体的问题

你的问题核心在于两点:一是定义的removeEvent函数从未被调用,二是用移除事件的方式实现切换效果完全没必要。正确的做法是在同一个点击事件里判断当前状态,直接切换样式。

方案一:直接操作行内样式

修改后的JavaScript代码如下:

const boldBtn = document.querySelector(".bold");
const italic = document.querySelector(".italic");
const fonce = document.querySelector(".fonce");

function toggleBold() {
    // 阻止a标签默认跳转行为
    event.preventDefault();
    // 判断当前是否为粗体状态
    const currentIsBold = boldBtn.style.fontWeight === "bold";
    // 确定要设置的字体粗细
    const targetWeight = currentIsBold ? "normal" : "bold";
    
    // 给所有目标元素设置样式
    boldBtn.style.fontWeight = targetWeight;
    italic.style.fontWeight = targetWeight;
    fonce.style.fontWeight = targetWeight;
}

// 绑定点击事件,每次点击都会切换状态
boldBtn.addEventListener("click", toggleBold);

方案二:用CSS类切换(更推荐)

这种方式将样式与逻辑分离,更易维护。

首先添加CSS类:

.text-bold {
    font-weight: bold;
}

然后修改JavaScript代码:

const boldBtn = document.querySelector(".bold");
// 收集所有需要切换粗体的元素
const targetElements = [
    boldBtn,
    document.querySelector(".italic"),
    document.querySelector(".fonce")
];

function toggleBold() {
    event.preventDefault();
    // 给每个元素切换text-bold类
    targetElements.forEach(el => el.classList.toggle("text-bold"));
}

boldBtn.addEventListener("click", toggleBold);

关键说明

  • 用event.preventDefault()阻止<a>标签点击后跳转到页面顶部的默认行为
  • 两种方案都是通过单次点击事件实现状态切换,不需要移除事件
  • CSS类方案更符合前端开发的关注点分离原则,后续调整样式只需修改CSS即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 00:30:38