Questão sobre HTML

Responder
helioneves
Electricista de 2ª
Electricista de 2ª
Mensagens: 327
Registado: 09 mar 2019, 13:13
Profissão: Desempregado
Localização: Por aí
Enviou: 4 vezes
Agradecimento recebido: 9 vezes

Questão sobre HTML

Mensagem por helioneves »

Tenho uma pedra no sapato relacionada com HTML... queria usar o evento "onclick" para mudar a cor de fundo de uma página; ( supostamente ) o seguinte código devia tratar do assunto:
<html>
<body>
Click anywhere in this window to change the background color of body
<script>
window.onclick = myFunction;
function myFunction() {
var cor=document.body.style.backgroundColor;
if(cor=="#000") document.body.style.backgroundColor="#fff";
else document.body.style.backgroundColor="#000";
}
</script>
</body>
</html>
Portanto, eu queria que a cada "clicadela" no rato, o fundo da página alternasse entre preto e branco... o que estou a fazer mal?
Avatar do Utilizador
Mestre Verde
Curioso
Curioso
Mensagens: 44
Registado: 08 fev 2026, 20:08
Profissão: Estudante Universitário
Localização: Barcelos
Enviou: 12 vezes
Agradecimento recebido: 1 vez

Re: Questão sobre HTML

Mensagem por Mestre Verde »

Primeiro ponto: não sei o que usas para criar os teus programas (um editor de texto ou um IDE), mas eu aconselho a usar rgb(0 a 255 (vermelho), 0 a 255 (verde), 0 a 255 (azul)) em vez de hexadecimal.

Experimenta este código ;)

Código: Selecionar todos

<html>
<body>
Clica em qualquer lugar para mudar de cor
<script>
let preto = false;

window.onclick = function() {
    if(preto){
        document.body.style.backgroundColor = "white";
    } else {
        document.body.style.backgroundColor = "black";
    }
    preto = !preto;
}
</script>

</body>
</html>
ou este se souberes que o Brawser que vais usar tem de certeza o fundo branco, se não aplicares nada como background:

Código: Selecionar todos

<html>
<head>
<style>
.preto {
    background-color: black;
}
</style>
</head>

<body>

Click anywhere in this window to change the background color

<script>
window.onclick = function() {
    document.body.classList.toggle("preto");
}
</script>

</body>
</html>
Técnico Superior de Mecatrónica ; Aspirante a Engenheiro de Mecatrónica
Coldhx
Faça a sua apresentação
Faça a sua apresentação
Mensagens: 7
Registado: 04 mar 2026, 17:48
Profissão: Eng. Informático
Localização: Lisboa
Agradecimento recebido: 1 vez

Re: Questão sobre HTML

Mensagem por Coldhx »

O problema é que o formato da propriedade

Código: Selecionar todos

document.body.style.backgroundColor
não é hexadecimal (tipo #000) mas uma string tipo

Código: Selecionar todos

rgb(0, 0, 0)
Podes resolver ao trocar o teu if para...

Código: Selecionar todos

if(cor=="rgb(0, 0, 0)")
... mas a solução ideal passa por não fazer comparação de strings e guardar o estado numa variável separada (como é exemplo da resposta acima, a variavel "preto").
Avatar do Utilizador
Mestre Verde
Curioso
Curioso
Mensagens: 44
Registado: 08 fev 2026, 20:08
Profissão: Estudante Universitário
Localização: Barcelos
Enviou: 12 vezes
Agradecimento recebido: 1 vez

Re: Questão sobre HTML

Mensagem por Mestre Verde »

Boa, referi em cima o formato rgb e esqueci-me de substituir no código, eu também.... :|
Técnico Superior de Mecatrónica ; Aspirante a Engenheiro de Mecatrónica
helioneves
Electricista de 2ª
Electricista de 2ª
Mensagens: 327
Registado: 09 mar 2019, 13:13
Profissão: Desempregado
Localização: Por aí
Enviou: 4 vezes
Agradecimento recebido: 9 vezes

Re: Questão sobre HTML

Mensagem por helioneves »

obrigado meus senhores pelas respostas!
Entretanto tinha descoberto num outro fórum o problema do meu código ( não é só aqui que há gente prestável... :bow: )
apesar de ainda não perceber porque é que o seguinte código não devolve absolutamente nada:

document.write(document.body.style.backgroundColor);

mas enfim, não se pode ter tudo...
Responder

Voltar para “Discussão Informática”