Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Não foi possível acessar o elemento 0

Ao tentar acessar um elemento da minha td de uma tr especifica ele infomra que não consegue acessar o elemento 0

segue o codigo

var trsPacientes = document.getElementsByClassName("paciente");




var cont = 0;
while(trsPacientes.length -1 >= cont)
{

    var pacientesTR = trsPacientes[cont];

    var tdNome = pacientesTR.getElementsByClassName["info-nome"][0];
    var tdPeso =  pacientesTR.getElementsByClassName["info-peso"][0];
    var tdALtura = pacientesTR.getElementsByClassName["info-altura"][0];

    var paciente = {nome: tdNome.textContent, peso: tdPeso.textContent, altura: tdALtura.textContent};


    var difernetedezero = (paciente[cont].altura != 0);

    if (difernetedezero){

        var imc =  paciente[cont].peso / (paciente[cont].altura * paciente[cont].altura);

        //document.getElementById("imc-2").textContent = imc;
        console.log(imc);


    }else{

        console.log("Não executei porque, a altura é igual a Zero");

    }
    cont ++;
}

no console apresenta a seguinte mensagem

calcula-imc.js:13 Uncaught TypeError: Cannot read property '0' of undefined at calcula-imc.js:13

3 respostas

Olá Ciro, tudo bem?

Você poderia também encaminhar o html para eu dar uma olhada?

Abs

Segue o html

<!doctype html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Meus pacientes</title>
        <link rel="stylesheet" type="text/css" href="reset.css">
        <link rel="stylesheet" type="text/css" href="alura.css">
    </head>
    <body>


        <header>
            <div class="container">
                <h1>Meus pacientes</h1>
            </div>
        </header>
        <main class="container">
            <section>
                <h2>Meus pacientes</h2>
                <table>
                    <tr>
                        <th>Nome</th>
                        <th>Peso(kg)</th>
                        <th>Altura(m)</th>
                        <th>IMC</th>
                    </tr>
                    <tr class="paciente">
                        <td class="info-nome">Leonardo</td>
                        <td class="info-peso" id="peso-1">57</td>
                        <td class="info-altura" id="altura-1">1.67</td>
                        <td class="info-imc" id="imc-1"></td>
                    </tr>
                    <tr class="paciente">
                        <td class="info-nome">Paulo</td>
                        <td class="info-peso" id="peso-2">100</td>
                        <td class="info-altura" id="altura-2">2.00</td>
                        <td class="info-imc" id="imc-2"></td>
                    </tr>
                </table>
                <button id="calcula-imcs" class="botao ">Calcular Imcs</button>
            </section>
            <section>
                <h2>Adicionar novo paciente</h2>    
                <form>
                    <fieldset>
                        <label for="nome">Nome:</label>
                        <input id="campo-nome" type="text" placeholder="digite o nome do seu paciente">
                    </fieldset>
                    <fieldset class="campo-medio">
                        <label for="peso">Peso:</label>
                        <input id="campo-peso" type="text" placeholder="digite o peso do seu paciente">
                    </fieldset>
                    <fieldset class="campo-medio">
                        <label for="altura">Altura:</label>
                        <input id="campo-altura" type="text" placeholder="digite a altura do seu paciente">
                    </fieldset>
                    <button id="adicionar-paciente" class="botao bto-principal">Adicionar</button>
                </form>
            </section>
        </main>
        <script src = "calcula-imc.js"></script>
    </body>
</html>
solução!

Descobri,

o problema é que estava chamando a função getElements com []

var tdNome = pacientesTR.getElementsByClassName["info-nome"][0];
    var tdPeso =  pacientesTR.getElementsByClassName["info-peso"][0];
    var tdALtura = pacientesTR.getElementsByClassName["info-altura"][0];

o correto é com ()

var tdNome = pacientesTR.getElementsByClassName("info-nome")[0];
    var tdPeso =  pacientesTR.getElementsByClassName("info-peso")[0];
    var tdALtura = pacientesTR.getElementsByClassName("info-altura")[0];

Obrigado!