Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
2
respuestas

Error en consola y no muestra los videos

Buenos días, estuve leyendo los post anteriores y no vi solución efectiva para mí, resulta que en consola me dice que: Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidadMi código de mostrarVideos.js es el siguiente:

import { conexionAPI } from './conexionAPI.js';

const listas = document.querySelectorAll('[data-lista]');

function crearCard(title, description, url, image) {
    const video = document.createElement('li'); //Cuando se ejecute la función se creará un elemento li
    video.className = 'videos__item'; //Se le asigna una clase al elemento li
    video.innerHTML = `
    <iframe width="100%" height="72%" src="${url}"
        title="${title}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>
    </iframe>

    <div class="descripcion-video">
        <img src="${image}" alt="logo canal alura">
        <h3>${title}</h3>
        <p>${description}</p>
    </div>
    `; //Se le asigna contenido al elemento li

    return video; //Se retorna el elemento li
}

async function listarVideos() {
    const listaAPI = await conexionAPI.listarVideos(); //Se llama a la función listarVideos de conexionAPI.js

    listaAPI.forEach(video => listas.appendChild(crearCard(video.titulo, video.descripcion, video.url, video.imagem))); //Se recorre la lista de videos y se le asigna un elemento li a cada uno
       
}

listarVideos(); //Se llama a la función listarVideos

Llevo horas mirando a que se deba y comparando el video de la clase y nada, por lo visto tengo lo mismo que tiene el profesor, pero no funciona. No sé cómo hace para que a él si le funcione y a mí no.

Le pregunte a chatgpt y me dice que listas.appendChild eso esta mal como se plantea y con la solucion que chatgpt me da ahí si funciona. Pero me siento confundido porque no se a que se deba el problema.

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad Lo otro es que me sale es: Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidadAlgun profe, me podría colaborar? Les agradecería mucho

2 respuestas

¡Hola Alfredo!

Después de revisar tu código, noté que estás utilizando listas como un NodeList, por lo que no puedes utilizar directamente el método appendChild en este caso, pues estarías intentando aplicar un método que solo puede ser aplicado a un elemento individual, a una lista de elementos. En su lugar, debes recorrer cada elemento de la lista y aplicar el método appendChild a cada uno de ellos. Aquí te dejo un ejemplo de cómo podrías hacerlo:

async function listarVideos() {
    const listaAPI = await conexionAPI.listarVideos();

    listaAPI.forEach(video => {
        listas.forEach(lista => {
            lista.appendChild(crearCard(video.titulo, video.descripcion, video.url, video.imagem));
        });
    });
}

En cuanto al error relacionado con las declaraciones de import, parece que olvidaste indicar que el script que estás ejecutando es un módulo. Para solucionar esto, asegúrate de agregar type="module" a la etiqueta de script en tu archivo HTML, de la siguiente manera:

<script type="module" src="mostrarVideos.js"></script>

¡Saludos!

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

Si señor y adicional a eso estaba usando querySelectorAll() a la vez de querySelector() y eso también me estaba dando problema