4
respostas

Problema com Visual Studio Code?

Boa tarde, segue o meu código e depois a dúvida:

var addButton = document.querySelector('#adicionar-paciente');
addButton.addEventListener('click', function(event){
    event.preventDefault();

    var form = document.querySelector('#user-form');
    var paciente = getPacient(form);

    console.log(paciente);

    var pacientTr = document.createElement('tr');

    var nameTd = document.createElement('td');
    var weightTd = document.createElement('td');
    var heightTd = document.createElement('td');
    var fatTd = document.createElement('td');
    var imcTd = document.createElement('td');

    nameTd.textContent = name;
    weightTd.textContent = weight;
    heightTd.textContent = height;
    fatTd.textContent = fat;
    imcTd.textContent = calcIMC(weight, height);

    pacientTr.appendChild(nameTd);
    pacientTr.appendChild(weightTd);
    pacientTr.appendChild(heightTd);
    pacientTr.appendChild(fatTd);
    pacientTr.appendChild(imcTd);

    var table = document.querySelector('#tabela-pacientes');
    table.appendChild(pacientTr);
})

function getPacient(form){

    var pacient = {
        name: form.name.value,
        weight: form.weight.value,
        height: form.height.value,
        fat: form.fat.value,
        imc: calcIMC(form.weight.value, form.height.value)
    }

    return pacient;
}

Após essa instrução, no Visual Studio Code, algumas variáveis aparecem com o nome mais apagado, com o erro: "'pacient' is declared but its value is never read.ts(6133)", caso a variável 'pacient' do início possua o mesmo nome que o objeto 'pacient'. Se eu mudo para "paciente", isso é resolvido. Sabe por que isso pode acontecer?

Além disso o navegador apresenta o seguinte erro: "Uncaught TypeError: Cannot read property 'value' of undefined at getPacient (form.js:38) at HTMLButtonElement. (form.js:6)"

Sendo que "value" está escrito da mesma forma como os demais!

Alguém ajuda?

4 respostas

Lucas, boa tarde!

Sobre as variáveis com o nome mais apagado com o aviso pacient' is declared but its value is never read , ela está avisando que essa variável esta sendo declarada, mas em nenhum momento elá está sendo usado após a declaração, se você estiver usando ela em outro lugar tente verificar se ela está escrita de forma igual em todos os locais do código, por isso que quando troca pra paciente funciona, pois a variável paciente é usada em outros locais da aplicação.

Sobre o segundo ponto "Uncaught TypeError: Cannot read property 'value' of undefined at getPacient (form.js:38) at HTMLButtonElement. (form.js:6)" isso está ocorrendo pois você está tentando acessar o valor value de um elemento que não está definido, o que eu acredito que pode estar ocorrendo é que o atributo name de algum campo do HTML esteja diferente do javascript. Para confirmar você poderia disponibilizar seu projeto para que possamos testar!

Espero ter ajudado e bons estudos!

O erro 'pacient' is declared but its value is never read.ts(6133) indica que a variável foi criada, mas nunca é usada, talvez o console.log(paciente) não estava no código, já que é o único lugar em que a variável é usada. O erro "Uncaught TypeError: Cannot read property 'value' of undefined at getPacient (form.js:38) at HTMLButtonElement. (form.js:6)" indica que um dos seus elementos não foi definido ou que não está sendo chamado de maneira correta.

Boa tarde gente, obrigado pelas respostas e deu pra entender o que estava acontecendo a partir do erro apontado pelo programa sim.

Porém, vejam só, eu resolvi simplesmente trocando o Visual Studio Code pelo Sublime Text3 nesse exercício. Usando o editor diferente por alguma razão o problema da variável apagada não aconteceu mais. Realmente é o caso de me aprofundar melhor nesse problema demais pra conhecer melhor o editor.

Ademais, muito obrigado!

Fazendo um outro curso notei que o seguinte código também faz a variável tempoRestante ficar apagada, mesmo interagindo com ela.

function inicializaCronometro(){
    var tempoRestante = $("#tempo-restante").text();
    campo.one("focus", function(){
        setInterval(function(){
            tempoRestante--;
    });    
}

ela só apareceu mesmo quando usei a variável para setar valor em um elemento

function inicializaCronometro(){
    var tempoRestante = $("#tempo-restante").text();
    campo.one("focus", function(){
         var id = setInterval(function(){
            tempoRestante--;
            $("#tempo-restante").text(tempoRestante);
            if (tempoRestante < 1){
                campo.attr("disabled", true);
                clearInterval(id);
            }
         }, 1000);
    });    
}

Isso deve ser mesmo o comportamento da GUI.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software