[Javascript na Prática]

Bom dia, gente.

Acompanhei o professor na aula de Javascript na prática mas o meu código não está funcionando corretamente, o retorno é sempre que o CPF é inválido, mesmo sendo válido.

Será que eu deixei algum detalhe passar?

function validaCPF(cpf) {
    if(cpf.lenght != 11) {
        return false;
    } else {

        var numeros = cpf.substring(0, 9);
        var digitos = cpf.substring(9);
    
        var soma = 0;
        for (var i = 10; i > 1; i--) {
            soma += numeros.charAt(10 - i) * i;
        }

        var resultado = (soma % 11) < 2 ? 0 : 11 - (soma % 11);

        // Validação do primeiro dígito
        if(resultado != digitos.chartAt(0)) {
            return false;
        }

        soma = 0;
        numeros = cpf.substring(0, 10);

        for (var k = 11; k > 1; k--) {
            soma += numeros.charAt(11 - k) * k;
        }

        resultado = (soma % 11) < 2 ? 0 : 11 - (soma % 11);

        // Validação do segundo dígito
        if(resultado != digitos.chartAt(1)) {
            return false;
        }

        return true;
    }
}

function validacao() {
    console.log('Iniciando validação de CPF')
    document.getElementById('success').style.display = 'none';
    document.getElementById('error').style.display = 'none';

    var cpf = document.getElementById("cpf_digitado").value;
    console.log(cpf);

    var resultadoValidacao = validaCPF(cpf);

    if (resultadoValidacao) {
        document.getElementById('success').style.display = 'block';
    } else {
        document.getElementById('error').style.display = 'block';
    }
}
13 Likes

Bom dia Felipe, tudo bem ?
Foram somente erros na escrita.
Errado: lenght, chartAt.
Certo: length, charAt

13 Likes

Bom dia, o amigo de cima já resolveu a questão, mas só queria complementar que é boa prática sempre utilizar o ;.

console.log(‘Iniciando validação de CPF’);

6 Likes

Obrigado, Marcus! Onde é acusado o erro de digitação? O programa roda mas não mostra os erros.

2 Likes

Como o programa era pequeno, usei console.log() em cada função pra saber a saida de cada variável dentro de cada função. Mas recomendo você dar uma olhada sobre Debug na sua IDE ou Editor de texto que esteja usando, no meu caso uso o VSCode. Exemplo: Procura no youtube assim: "Debug do JavaScript usando o VSCode"ou “Debug do JavaScript”, ou algo semelhante a isso.

6 Likes

Massa, obrigado.

1 Like

@HamiltonLopes eu uso o console.log no código quase todo rsrsr, quando esta pronto vou removendo.

Opa, complementando o que ja te ajudaram, uma coisa q é mto útil quando vc n consegue achar o erro, é disparar vários consoles logs, embaixo das funçoes, variáveis… uma hora acha, kkk

1 Like

Oi gente! Aproveitando o tópico pra pedir ajuda com relação a um problema que to tendo no Run and Debug do VS Code.
Já instalei a extensão do Node.js e outras pra testar, porém essa mensagem de erro continua aparecendo e eu não consigo rodar nada no meu arquivo js:

e abre outro arquivo de configuração:

Também aparece um aviso no terminal sobre instalar uma versão mais recente do PowerShell, já instalei e o programa continua com algum erro e não roda nada, nem no console. Alguém sabe o que fazer?

2 Likes

Não esta achando o binario do NodeJS. Instalou o NodeJS? A extensão precisa do Node pra rodar. Baixe e instale se não instalou, reinicie o VSCode e tente o Run novamente.

2 Likes

Bom dia Barbara, tudo bem ? Caso não tenha conseguido solucionar, instala o nodejs Download | Node.js .Se você estiver usando o Windows, no site acima clica na bandeira do Windows pra poder baixar o executável. Clica nele 2x pra poder começar a instalação e sai avançando em next ou seguinte ou próximo ou avançar. Após finalizar a instalação, reinicie o computador e abra o VSCode e tente novamente o que esteja tentando fazer no seu VSCode. Qualquer novidade manda mensagem aqui e no slack pra ver se te ajudam. Caso consiga a solução, não esqueça de postar aqui para ajudar outras pessoas que tiverem o mesmo problema que o seu.

2 Likes

Me salvou também, valeu !!!

2 Likes

Eu fiz o código sem validação de dígito verificador, somente pra comparar os dois, as vezes fica melhor de visualizar comparando as diferenças.

//criando a função de validar o cpf digitado
function validacao(){

//limpar o display
document.getElementById('success').style.display = 'none';
document.getElementById('error').style.display = 'none';

//capturando o valor do cpf digitado no input
var documento = document.getElementById('cpfDigitado').value;

//validando o input se diferente de vazio e se a quantidade é igual a 11
if(documento != '' && documento.length == 11) {
    document.getElementById('success').style.display = 'block';//chamando o status de sucesso
}else{
    document.getElementById('error').style.display = 'block';//chamando o status de erro
}

}

@JMT @Marcus_Vinicius obrigada pelas dicas, consegui resolver! Pra quem tá com o mesmo problema: no meu caso, era a versão do node.js que eu tinha instalado (extensão .zip), então eu indico usar o windows installer (.msi) no site oficial: Download | Node.js

2 Likes