Solucionado (ver solución)
Solucionado
(ver solución)
7
respuestas

No carga Tabla

Buen día.

Al hacer clic en el botón, no me carga la tabla.

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

Index.html

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

forms.js

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

buscarPaciente.js

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

7 respuestas

Hola Gastón, como estás?

Para que podamos ayudarte de una manera más efectiva, necesitamos tu código completo.

En el caso de que necesites, te dejo un video que te vas a enseñar como compartir un código en nuestro foro: https://youtu.be/tevEdARFxGU o quizás nos puede compartir el link de tu repositório en Github, en el caso que tengas este proyecto allá.

Te esperamos!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios

Pensé que era mejor en imágenes. Ahí paso código.

index.html

<!DOCTYPE html>
<html lang="es">
    <head>
        <meta charset="UTF-8">
        <title>Buona Vita Nutrición</title>
        <link rel="icon" href="favicon.ico" type="image/x-icon">
        <link rel="stylesheet" type="text/css" href="css/reset.css">
        <link rel="stylesheet" type="text/css" href="css/index.css">

    </head>
    <body>

        <header>
            <div class="container">
                <h1 class="titulo">Buona Vita Nutrición</h1>
            </div>
        </header>
        <main>
            <section class="container">
                <h2>Mis pacientes</h2>

                <label for="filtrar-tabla"></label>
                <input type="text" name="filtro" id="filtrar-tabla" placeholder="Digite el nombre del paciente">

                <table>
                    <thead>
                        <tr>
                            <th>Nombre</th>
                            <th>Peso(kg)</th>
                            <th>Altura(m)</th>
                            <th>Gordura Corporal(%)</th>
                            <th>IMC</th>
                        </tr>
                    </thead>
                    <tbody id="tabla-pacientes">
                        <tr class="paciente" id="primer-paciente">
                            <td class="info-nombre">Pablo</td>
                            <td class="info-peso">100</td>
                            <td class="info-altura">2.00</td>
                            <td class="info-gordura">10</td>
                            <td class="info-imc">0</td>
                        </tr>

                        <tr class="paciente" >
                            <td class="info-nombre">Juan</td>
                            <td class="info-peso">80</td>
                            <td class="info-altura">1.72</td>
                            <td class="info-gordura">40</td>
                            <td class="info-imc">0</td>
                        </tr>

                        <tr class="paciente" >
                            <td class="info-nombre">Erica</td>
                            <td class="info-peso">54</td>
                            <td class="info-altura">1.64</td>
                            <td class="info-gordura">14</td>
                            <td class="info-imc">0</td>
                        </tr>

                        <tr class="paciente">
                            <td class="info-nombre">Diego</td>
                            <td class="info-peso">85</td>
                            <td class="info-altura">1.73</td>
                            <td class="info-gordura">24</td>
                            <td class="info-imc">0</td>
                        </tr>
                        <tr class="paciente" >
                            <td class="info-nombre">Tatiana</td>
                            <td class="info-peso">46</td>
                            <td class="info-altura">1.55</td>
                            <td class="info-gordura">19</td>
                            <td class="info-imc">0</td>
                        </tr>
                    </tbody>
                </table>

                <span id="error-ajax" class="invisible">Error al buscar los pacientes</span>
                <button id="buscar-paciente" class="boton bto-principal">Buscar Pacientes</button>

            </section>
        </main>

        <section class="container">
            <h2 id="titulo-form">Adicionar nuevo paciente</h2>
            <ul id="mensajes-errores"></ul>

            <form id="form-adicionar">
                <div class="grupo">
                    <label for="nombre">Nombre:</label>
                    <input id="nombre" name="nombre" type="text" placeholder="digite el nombre del paciente" class="campo">
                </div>
                <div class="grupo">
                    <label for="peso">Peso:</label>
                    <input id="peso" name="peso" type="text" placeholder="digite el peso del paciente" class="campo campo-medio">
                </div>
                <div class="grupo">
                    <label for="altura">Altura:</label>
                    <input id="altura" name="altura" type="text" placeholder="digite la altura del paciente" class="campo campo-medio">
                </div>
                <div class="grupo">
                    <label for="gordura">% de Gordura:</label>
                    <input id="gordura" type="text" placeholder="digite el porcentaje de gordura del paciente" class="campo campo-medio">
                </div>
                <button id="adicionar-paciente" class="boton bto-principal">Adicionar</button>
            </form>
        </section>

        <script src="js/calcular-imc.js"></script>
        <script src="js/form.js"></script>
        <script src="js/validarDatos.js"></script>
        <script src="js/eliminarPaciente.js"></script>
        <script src="js/filtrar.js"></script>
        <script src="js/buscarPacientes.js"></script>

    </body>
</html>

`

forms.js

//Tomo todo el valor del boton
var botonAdicionar = document.querySelector("#adicionar-paciente");

//Funcion al hacer clic en botón Enviar
botonAdicionar.addEventListener("click",function(event){
    event.preventDefault();

    //Tomo el valor de todo el formulario
    var form = document.querySelector("#form-adicionar");  
    var paciente = capturarDatosPaciente(form);

    var errores = validarPaciente(paciente);
    if(errores.length > 0 ){
        exhibirMensajesErrores(errores);
        return;
    }

    adicionarPacienteEnTabla(paciente);
    form.reset();

    var mensajesErrores = document.querySelector("#mensajes-errores");
    mensajesErrores.innerHTML = "";

});

function adicionarPacienteEnTabla(paciente){
    var pacienteTr = construirTr(paciente);
    //Tomo valor tabla pacientes
    var tabla = document.querySelector("#tabla-pacientes");
    //Reflejo datos en tabla
    tabla.appendChild(pacienteTr);
}

function capturarDatosPaciente(fomr){
    //Obtenemos Valores de cada input
    var paciente = {

        nombre: form.nombre.value,
        peso: form.peso.value,
        altura: form.altura.value,
        gordura: form.gordura.value,
        imc:calcularIMC(form.peso.value,fomr.altura.value)
    }
    return paciente;

}

function construirTr(paciente){ 
    //Creamos Etiquetas <td></td> y una <tr></tr>
    var pacienteTr = document.createElement("tr");
    pacienteTr.classList.add("paciente");

    //Asignación  al tr de los td, y a la tabla el tr
    pacienteTr.appendChild(construirTd(paciente.nombre,"info-nombre"));
    pacienteTr.appendChild(construirTd(paciente.peso,"info-peso"));
    pacienteTr.appendChild(construirTd(paciente.altura,"info-altura"));
    pacienteTr.appendChild(construirTd(paciente.gordura,"info-gordura"));
    pacienteTr.appendChild(construirTd(paciente.imc,"info-imc"));

    return pacienteTr;

}

function construirTd(dato,clase){
    var td = document.createElement("td");
    td.classList.add(clase);
    td.textContent = dato;

    return tdAltura;

}

buscarPaciente.js

var botonBuscar = document.querySelector("#buscar-paciente");

botonBuscar.addEventListener("click",function(){
    //Creo objeto con requesición de Ajax
    var xhr = new XMLHttpRequest();
    //Abro requesición
    xhr.open("GET"," https://alura-es-cursos.github.io/api-pacientes/pacientes.json");
    //Escuchoevento de carga
    xhr.addEventListener("load",function(){
        var errorAjax = document.querySelector("#error-ajax");

        if(xhr.status == 200){
            errorAjax.classList.add("invisible");
            //Cargo en variable el texto del objeto
            var respuesta = xhr.responseText;
            //Cargoen variable valores de respuesta parceados - convertidos de string a json-
            var pacientes = JSON.parse(respuesta);

            //Itero en todos los pacientes y llamo a funcion para adicionar en tabla
            pacientes.forEach(function(paciente){
                adicionarPacienteEnTabla(paciente);
                console.log(paciente);
            });
        }else{
            errorAjax.classList.remove("invisible");
            console.log(xhr.status);
            console.log(xhr.responseText);
        }

    });

    xhr.send();
});

Hola. Prueba comentando la línea de:

errorAjax.classList.add("invisible");

en el último if, y dime que aparece.

Hola!

Me hace lo mismo.

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

Sigo igual :(

solución!

Hola Gastón, disculpa la demora en responder.

Creo que el error está en tu function construirTd()

function construirTd(dato,clase){
    var td = document.createElement("td");
    td.classList.add(clase);
    td.textContent = dato;

    return tdAltura;

} 

Tu función deberia regresar td pero está regresando tdAltura que es lo que está cargando en la tabla. Deberia estar así:

function construirTd(dato,clase){
    var td = document.createElement("td");
    td.classList.add(clase);
    td.textContent = dato;
    return td;
}

Espero haberte ayudado. Un saludo y hasta luego!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios