我有這段程式碼,我為一個物件分配顏色,然後使用條件來檢查該項目是否已被選擇。然而,條件不起作用,因為 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)
。