Oii, Jorge.
Entendo perfeitamente a dúvida. É muito comum, quando estamos começando a manipular o DOM (os elementos da página), confundirmos como o computador deve tratar o que o usuário digita: se é um texto ou um número.
Identifiquei três pontos principais que estão impedindo o funcionamento correto:
- Tipo do Input: O campo de entrada está definido como
type="number". Como nomes de países são textos, o correto é type="text". Se deixarmos como número, o usuário nem conseguirá digitar "Brasil". - Conversão de dados: Na linha
var país = Number(txtv.value), o código está forçando o que foi digitado a virar um número. Se o usuário digitar "Brasil" e tentarmos transformar em número, o resultado será NaN (Not a Number/Não é um número). Precisamos pegar o valor como texto (String). - Lógica fora da função: A lógica de validação (
if (país == 'Brasil')...) está fora da função mostrar(). Isso significa que ela roda assim que a página carrega (quando a variável país ainda está vazia ou indefinida), e não quando o botão é clicado.
Código com correções:
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Suas nacionalidades</title>
</head>
<body>
<h1>Sua nacionalidade</h1>
<input type="text" name="txtPaís" id="txtPaís">
<input type="button" value="verificar" onclick="mostrar()">
<div id="nação"></div>
<script>
function mostrar() {
var txtv = document.getElementById('txtPaís')
var nação = document.querySelector('div#nação')
// Correção 2: Removemos o Number() para pegar o texto puro
var país = txtv.value
nação.innerHTML = `<p>Sua situação atual é de <strong>${país}</strong></p>`
// Correção 3: Trazemos a lógica para dentro da função
if (país == 'Brasil' || país == 'brasil') { // Dica extra: aceitar minúsculas também
nação.innerHTML += '<p>Você é Brasileiro!</p>'
} else {
nação.innerHTML += '<p>Você é Estrangeiro</p>'
}
}
</script>
</body>
</html>
O que mudou:
type="text": Agora o campo aceita letras.txtv.value: Pegamos o valor direto, sem transformar em número.- Estrutura condicional (
if/else): Colocamos dentro da função mostrar() para que a verificação aconteça apenas após o clique no botão.
Essa estrutura vai garantir que o programa leia o nome do país e dê a resposta correta!
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!