Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

SOS Challenge Amigo Secreto

Hola, queridos colegas!

Bueno, he hecho mi mejor esfuerzo con el Challenge, y lo he puesto en GitHub, pero aun no logro darle en el clavo para que funcione. He buscado ayuda en linea, consultado fuentes, y bueno, asi estan las cosas. Ya lo entregue- sin embargo, quisiera poderlo hacer funcionar, para conservar la oportunidad de avanzar en los estudios.

Si alguien tiene posibilidad, me puede ayudar a que funcione correctamente?

Aqui les mando lo que hice:

let nombre = prompt('Ingresa el nombre de un amigo');
let listaAmigos = [];

var listaAmigos = [(document.getElementById('agregarAmigo').value)]; //tomar los datos que se generan al hacer click en el boton de 'agregar amigo' para llevarlos al log de la lista "Lista de Amigos"
var resultado = [document.getElementById('sortearAmigo').value]; //tomar los datos que se generan al hacer click en el boton de 'sortear amigo' para llevarlos al log de la lista "Super Amigo"

listaAmigos.forEach(nombre => {
  console.log(nombre);  //creando el log de la lista de nombres
});

//let listaAmigos = [];//
function generarlistaAmigos() {
    if(listaAmigos.includes(nombre)) { //checkea si el nombreesta en la lista
        asignarTextoElemento('p', `Adicionamos el nombre ${nombre} a la lista.`);
        return listaAmigos.length; //falta anhadir el boton de anhadir amigo 
    } else {
      if (nombre === "") {  // cuando el nombre esta vacio
        alert('Escribe un nombre valido');
        } else {
            listaAmigos.push(nombre); //para incluir cada nombre escrito a la lista
            asignarTextoElemento('p', `Adicionamos el nombre ${nombre} a la lista.`); 
            return listaAmigos.length;
            } 
        }
    }
  
const button = document.createElement('button'); //activa la funcion del boton Agregar Amigo
button.textContent = 'Añadir amigo';
button.id = "botonDeAgregarAmigo";
document.body.appendChild(botonDeAgregarAmigo);


// Cuando el botón es presionado, se solicita un nombre y se agrega a la lista
botonDeAgregarAmigo.addEventListener('click', () => {
    nombre = prompt('Ingresa el nombre de un amigo');
    generarListaAmigos();
});

function generarSuperAmigo() {  //genera al super amigo aleatoriamente con una funcion
  function randomDraw(listaAmigos) {
    const randomIndex = Math.floor(Math.random() * arr.length);
    return arr[randomIndex];
}
  const drawnItem = randomDraw(`${sortearAmigo}`);
  console.log('Tu Super Amigo es: + drawnItem');


// Crear un botón para sortear un "Super Amigo"
const sortearButton = document.createElement('button');
sortearAmigoButton.textContent = 'Sortear Super Amigo';
document.body.appendChild(sortearButton);

// Cuando el botón de sorteo es presionado, se selecciona un super amigo aleatoriamente
sortearButton.addEventListener('click', () => {
    const superAmigo = randomDraw(listaAmigos);
    console.log(`Tu Super Amigo es: ${superAmigo}`);
});

}
1 respuesta

¡Hola, Camila, espero que estés bien!

Entiendo que estás trabajando en un proyecto para un "Amigo Secreto" y parece que hay algunos problemas en el código que compartiste. Vamos a revisar algunos puntos que podrían estar causando problemas y cómo podrías solucionarlos:

  1. Duplicación de Variables: Estás declarando listaAmigos dos veces. Primero como let listaAmigos = []; y luego como var listaAmigos = [(document.getElementById('agregarAmigo').value)];. Deberías mantener solo una declaración y asegurarte de que listaAmigos sea un array vacío inicialmente.

  2. Uso de Elementos HTML: Parece que estás intentando obtener valores de elementos HTML con document.getElementById('agregarAmigo').value, pero no has mencionado que estos elementos existan en tu HTML. Asegúrate de que los elementos con los IDs agregarAmigo y sortearAmigo existan en tu documento HTML.

  3. Errores en el Código:

    • En la función generarlistaAmigos, el nombre de la función debería coincidir con el que usas en el evento addEventListener. Asegúrate de que se llame generarListaAmigos en ambos lugares.
    • La función randomDraw está intentando acceder a arr.length, pero arr no está definido. Deberías usar listaAmigos.length en su lugar.
    • En randomDraw, cuando llamas a randomDraw(${sortearAmigo});, parece que estás pasando una cadena en lugar de un array. Deberías pasar listaAmigos.
  4. Errores de Sintaxis:

    • En la línea console.log('Tu Super Amigo es: + drawnItem');, hay un error de sintaxis. Debería ser console.log('Tu Super Amigo es: ' + drawnItem);.

Aquí tienes una versión corregida del código:

let listaAmigos = [];

function generarListaAmigos() {
    let nombre = prompt('Ingresa el nombre de un amigo');
    if (listaAmigos.includes(nombre)) {
        asignarTextoElemento('p', `Adicionamos el nombre ${nombre} a la lista.`);
    } else {
        if (nombre === "") {
            alert('Escribe un nombre valido');
        } else {
            listaAmigos.push(nombre);
            asignarTextoElemento('p', `Adicionamos el nombre ${nombre} a la lista.`);
        }
    }
}

const botonDeAgregarAmigo = document.createElement('button');
botonDeAgregarAmigo.textContent = 'Añadir amigo';
document.body.appendChild(botonDeAgregarAmigo);

botonDeAgregarAmigo.addEventListener('click', generarListaAmigos);

function randomDraw(arr) {
    const randomIndex = Math.floor(Math.random() * arr.length);
    return arr[randomIndex];
}

const sortearButton = document.createElement('button');
sortearButton.textContent = 'Sortear Super Amigo';
document.body.appendChild(sortearButton);

sortearButton.addEventListener('click', () => {
    const superAmigo = randomDraw(listaAmigos);
    console.log(`Tu Super Amigo es: ${superAmigo}`);
});

Espero que estas correcciones te ayuden a hacer funcionar tu proyecto. ¡Bons estudios!