我有这段代码,我为一个对象分配颜色,然后使用条件来检查该项目是否已被选择。然而,条件不起作用,因为 javascript(或浏览器)将 hsl 转换为 rgb,这会阻止任何匹配的发生。我想知道是否有办法阻止 JS(或浏览器)的这种行为,如果没有,为什么会发生?
function selecionarNota() { if (this.style.backgroundColor == 'hsl(25, 97%, 53%)') { for (let i = 0; i < numAvaliacao.length; i++) { numAvaliacao[i].style.backgroundColor = 'hsl(213, 19%, 21%)'; numAvaliacao[i].style.color = 'hsl(217, 12%, 63%)'; } } else { for (let i = 0; i < numAvaliacao.length; i++) { numAvaliacao[i].style.backgroundColor = 'hsl(213, 19%, 21%)'; numAvaliacao[i].style.color = 'hsl(217, 12%, 63%)'; } this.style.backgroundColor = 'hsl(25, 97%, 53%)'; this.style.color = 'white'; } }
我确实意识到我可以通过在代码中使用 rgb 来解决这个问题。但我真的很想了解为什么会发生这种情况。
发生这种情况是因为它是浏览器的标准。
我建议使用这些颜色创建 css 类并在 javascript 中应用这些类。然后,您可以在条件中使用
element.classList.contains(class)
。