Primeira vez que posto uma pergunta sobre programação aqui. Estou quase terminando um jogo em JS/HTML/CSS e vou publicá-lo no Steam em breve. Resumindo, me deparei com um problema: precisei mover todos os estilos inline do HTML para um arquivo CSS externo. Ao fazer isso, meu código de trabalho parece ter quebrado. Resumi tudo a esta pergunta: por que o botão no código abaixo não exibe a div? Com todos os estilos movidos para um arquivo CSS externo, como posso fazer com que linhas em JavaScript como essa document.getElementById("id").style.display = ""
funcionem com ajustes mínimos nas minhas milhares de linhas de código?
CSS :
#testID {
display: none;
}
HTML :
<div id="testID">
1234
</div>
<div>
<button onclick="showFn()">Show</button>
</div>
Javascript :
function showFn() {
document.getElementById("testID").style.display = ""
}
O problema é que seu CSS define
display: none
, mas em JavaScript você está definindostyle.display = ""
, o que não substitui a regra CSS — apenas remove o estilo embutido, deixando a regra CSS externa em vigor.Altere esta linha no seu JavaScript:
para:
Isso substitui explicitamente o CSS
display: none
e exibe o elemento. Se não tiver certeza de qual valor de exibição usar (por exemplo, inline, flex), inspecione o elemento antes de ocultá-lo para ver qual era originalmente.Seria melhor usar uma classe, porque assim todas as suas informações de estilo permanecerão na folha de estilo. Se o seu JavaScript alterar o código
style
diretamente, algumas das suas informações de estilo estarão na folha de estilo e outras no JavaScript... isso torna seu código mais difícil de manter.Não estou respondendo à pergunta diretamente como foi feita (*), mas acho que vale a pena ressaltar que o
hidden
atributo existe e pode ajudar muito nestes cenários:(*) a reversão
display
geralmente é melhor feita usandodisplay: revert