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

jQuery 3.6.0点击切换按钮背景色仅能变绿无法变蓝问题

问题根因

浏览器对style.backgroundColor属性的返回值做了自动格式转换:当你写入命名颜色Green后,读取该属性得到的不是你写入的颜色名字符串,而是标准RGB格式值rgb(0, 128, 0)。你的判断逻辑里用属性返回值和字符串"Green"做相等比较,永远会返回false,所以第一次点击设置为绿色后,后续所有点击都不会触发else分支的蓝色设置逻辑。

修复方案

你可以根据需求任选以下实现方式:

  • 方案1:直接和RGB格式值做判断,适配现有写法
$("#bgcolor").click(() => {
  const btn = document.getElementById("bgcolor")
  if (btn.style.backgroundColor !== "rgb(0, 128, 0)") {
    btn.style.backgroundColor = "Green"
  } else {
    btn.style.backgroundColor = "Blue"
  }
})
  • 方案2:用自定义属性标记状态,不受浏览器颜色格式差异影响
$("#bgcolor").click(() => {
  const btn = document.getElementById("bgcolor")
  const isGreen = btn.dataset.isGreen === 'true'
  btn.style.backgroundColor = isGreen ? "Blue" : "Green"
  btn.dataset.isGreen = String(!isGreen)
})
  • 方案3:通过类名切换控制样式,是前端实现同类需求的通用最优解
    先定义CSS样式:
.bg-green {
  background-color: Green;
}
.bg-blue {
  background-color: Blue;
}

JS逻辑只负责类名切换:

$("#bgcolor").click(() => {
  const $btn = $("#bgcolor")
  $btn.toggleClass('bg-green bg-blue')
})

内容的提问来源于stack exchange,提问作者Hưng Nguyễn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 17:24:03