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

jQuery结合if else切换按钮背景色及判断条件问题

结论

这个if判断完全无法正常工作,存在两个致命问题:

  • 语法错误:选择器前缺失jQuery对象声明符$,('#btn1')无法选中目标按钮,代码运行到这里会直接抛出JavaScript错误。
  • 逻辑错误:jQuery调用.css("background-color")获取的颜色值,不会返回你设置的"green"这类颜色关键字,所有浏览器都会统一将颜色解析为rgb()/rgba()格式的字符串,标准绿色对应的返回值是rgb(0, 128, 0),透明背景返回值为rgba(0, 0, 0, 0),直接和字符串"green"做全等判断永远不会返回true。
推荐实现方式

不要直接读取计算样式做判断,最稳妥、兼容性最好的方案是通过CSS类切换状态,不需要手写分支判断逻辑:

/* 定义点赞激活状态的样式类 */
.btn-vote-up {
  background-color: green;
}
function vote(str){
  if(str === 1){
    // toggleClass会自动判断类名是否存在:存在则移除,不存在则添加
    $('#btn1').toggleClass('btn-vote-up');
  } else {
    $('#btn2').css("background-color", "red");
  }
}

如果你一定要直接判断内联样式值,需要补全$符号,同时匹配浏览器返回的rgb格式值:

function vote(str){
  if(str === 1){
    // 补全$,匹配浏览器返回的rgb格式绿色值
    if( $('#btn1').css("background-color") === "rgb(0, 128, 0)" ){
      $('#btn1').css("background-color", "");
    } else {
      $('#btn1').css("background-color", "green");
    }
  } else {
    $('#btn2').css("background-color", "red");
  }
}

注意:不同浏览器、不同jQuery版本对透明色的返回格式可能存在差异,直接匹配rgb值的方案存在兼容风险,优先选择类名切换的实现方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 19:03:42