Heim > Fragen und Antworten > Hauptteil
Ich habe diesen Code, bei dem ich einem Objekt eine Farbe zuweise und dann mithilfe einer Bedingung überprüfe, ob das Element ausgewählt wurde. Die Bedingung funktioniert jedoch nicht, da Javascript (oder der Browser) HSL in RGB konvertiert, wodurch ein Abgleich verhindert wird. Ich frage mich, ob es eine Möglichkeit gibt, dieses Verhalten in JS (oder Browsern) zu verhindern, und wenn nicht, warum passiert es?
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'; } }
Mir wurde klar, dass ich dieses Problem lösen könnte, indem ich RGB in meinem Code verwende. Aber ich würde wirklich gerne verstehen, warum das passiert.
P粉0769873862024-04-01 10:48:37
发生这种情况是因为它是浏览器的标准。
我建议使用这些颜色创建 css 类并在 javascript 中应用这些类。然后,您可以在条件中使用 element.classList.contains(class)
。