CSS报background值解析错误声明丢弃,随机换色按钮点击无响应如何解决?
问题原因
- 核心错误为颜色数组中存在无效的十六进制颜色值:数组第二项
"#85DCB"仅为5位,标准十六进制颜色仅支持3位简写、6位全写两种合法格式,浏览器无法解析该值,因此抛出Error in parsing value for ‘background’. Declaration dropped错误。 - 报错随机触发的原因是只有当随机数选中该无效色值时才会触发异常,其余时间使用有效色值可正常运行,完全匹配描述的故障特征。
- 报错触发后,background属性赋值操作会被浏览器丢弃,
_cC无法命中switch中对应的case分支,会直接走default默认逻辑,进而出现颜色不切换、名称展示异常、响应卡顿等问题。
修复方案
- 修正颜色数组中的无效色值,将
#85DCB补全为6位合法十六进制值,以薄荷绿为例可修改为#85DCBA:
let color = [ "#E27D60", "#85DCBA", // 此处修正为6位合法色值 "#E8A87C", "#C38D9E", "#41B3A3", "#242582", "#553D67", "#F64C72", "#99738E", ]
- 同步修改switch分支中对应的判断值,和修正后的色值保持一致:
case "#85DCBA": // 和上方修正后的色值对应 _cN = " Mintgreen"; break;
- 可选优化:纯颜色赋值时统一使用
backgroundColor而非background,避免和背景属性的其他配置项混淆,降低出错概率:
// 替换原background赋值逻辑 _cC = document.body.style.backgroundColor = pack[point]; document.getElementById('change-me').style.backgroundColor = pack[point];
内容的提问来源于stack exchange,提问作者user16915455
相关产品推荐
相关产品推荐

