1
resposta

[Dúvida] Condição não está funcionando

Alguém me ajuda com esse código pf, estou tentando fazer um teste de nacionalidade, porém o único valor que aparece é Brasileiro, independente do país que eu escreva. O código está assim:

function checar() {
    var txt = document.querySelector('input#txt1')
    var res = document.querySelector('div#res')
    var país = 'Brasil'
        res.innerHTML = `<p>Você é do país ${país}</p>`
        if (país == 'Brasil') {
            res.innerHTML += '<p>Você é brasileiro</p>'
        } else {
            res.innerHTML += '<p>Você é estrangeiro</p>'
        }
    }
1 resposta

O problema no seu código é que você está definindo a variável "país" como 'Brasil' e, em seguida, verificando se ela é igual a 'Brasil' no seu if/else.

independentemente do que for digitado no campo de texto, a nacionalidade sempre será exibida como brasileiro.

Para corrigir isso, você precisa pegar o valor do campo de texto usando a propriedade value e, em seguida, compará-lo com os valores dos diferentes países usando uma estrutura condicional, como um switch-case.

Nessas situações, eu sempre prefiro utilizar o padrão switch-case:

// código oculto
 var pais = txt.value.toLowerCase(); // pegar o valor do campo de texto e transformar em letras minúsculas

    switch(pais) {
        case 'brasil':
            res.innerHTML = `<p>Você é do país ${pais}</p><p>Você é brasileiro</p>`;
            break;

        // Pode incluir outros também
        case 'italia':
            res.innerHTML = `<p>Você é do país ${pais}</p><p>Você é italiano</p>`;
            break;

        default:
            res.innerHTML = `<p>Você é do país ${pais}</p><p>Você é estrangeiro</p>`;
    }

Você pode incluir outros cases (se preferir), mas pelo exemplo citado acima (pensei em deixar o código o mais próximo possível).

Perceba que eu usei toLowerCase (para capturar apenas letras minúsculas) - caso deseje com todas maiúsculas (use toUpperCase) - caso não deseje nenhuma delas (basta ignorar essa funcionalidades e escrever apenas assim:

 var pais = txt.value;