我有这样的代码,我给一个对象分配了一个颜色,然后我使用一个条件来检查这个项目是否已经被选中。但是这个条件不起作用,因为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来解决这个问题。但我真的很想了解为什么会发生这种情况。
1条答案
按热度按时间11dmarpk1#
这是因为它是浏览器的标准。
我建议创建带有这些颜色的css类,并在javascript中应用这些类,然后在条件语句中使用
element.classList.contains(class)
。