JavaScript - Guardar datos en una tabla mediante prompt

 
Vista:
sin imagen de perfil

Guardar datos en una tabla mediante prompt

Publicado por jrc (5 intervenciones) el 04/10/2022 01:15:46
Hola, pues queria ver si me podrian ayudar con esto... Tengo una pagina web que me guarda datos de los votos de personas y al finalizar la encuesta me muestra los resultados en una tabla, pero lo que quiero ahora es agregar un nuevo espacio de 'Nombres' y que mediante otro prompt me pida mi nombre y al finalizar lo muestre en la tabla

Aqui el codigo que tengo

//Declaración de variables
var voto;
var producto;
var opcion = true;
var cont1 = cont2 = cont3 = 0;
var total;
var per1, per2, per3;
//Mostrar las instrucciones para responder
document.write("<div class=\"container\">");
document.write("<div class=\"row\">");
document.write("<h1 class=\"text-center\">");
document.write("Encuesta para determinar cuántas personas están a favor de la portabilidad numérica de teléfonos");
document.write("celulares.");
document.write("</h1>");
document.write("</div>");
document.write("<div class=\"row\">");
document.write("<ul class=\"list-group list-group-flush\">");
document.write("<li class=\"list-group-item fw-bold\">Digite \"1\" si esta a favor</li>");
document.write("<li class=\"list-group-item fw-bold\">Digite \"2\" si esta en contra</li>");
document.write("<li class=\"list-group-item fw-bold\">Digite \"3\" si se abstiene de opinar</li>");
document.write("</ul>");
document.write("</div>");
document.write("</div>");
//Ciclo repetitivo infinito donde se captura voto por voto
//en tanto no se de por terminada el ingreso de respuesta de la encuesta
while (opcion == true) {
voto = parseInt(prompt('¿Cuál es su voto?', ''));
switch (voto) {
case 1:
cont1++;
break;
case 2:
cont2++;
break;
case 3:
cont3++;
break;
default:
alert('¡Voto no válido!');
}
//Se pregunta si se desea terminar la encuesta o continuar
opcion = confirm('¿Desea continuar s/n?');
}
//Obtener el total de respuestas de la encuesta
total = cont1 + cont2 + cont3;
//Obtener el porcentajes de la primera respuesta
per1 = Math.round((cont1 / total) * Math.pow(10, 2)) / Math.pow(10, 2);
//Obtener el porcentajes de la segunda respuesta
per2 = Math.round((cont2 / total) * Math.pow(10, 2)) / Math.pow(10, 2);
//Obtener el porcentajes de la tercera respuesta
per3 = Math.round((cont3 / total) * Math.pow(10, 2)) / Math.pow(10, 2);
//Mostrar los resultados de la encuesta
with (document) {
write("<div class=\"container\">");
write("<div class=\"row\">");
write("<table class=\"table table-primary table-striped table-hover\">");
write("<thead>");
write("<tr>");
write("<th>Resultado de los votos</th>");
write("<th>Votos obtenidos</th>");
write("<th>Porcentaje</th>");
write("</tr>");
write("</thead>");
write("<tbody>");
write("<tr>");
write("<td>Votos a favor </td>");
write("<td>" + cont1 + "</td>");
write("<td>" + per1 * 100 + " %</td>");
write("</tr>");
write("<tr>");
write("<td>Votos en contra </td>");
write("<td>" + cont2 + "</td>");
write("<td>" + per2 * 100 + " %</td>");
write("</tr>");
write("<tr>");
write("<td>Se abstienen de opinar </td>");
write("<td>" + cont3 + "</td>");
write("<td>" + per3 * 100 + " %</td>");
write("</tr>");
write("</tbody>");
write("<tfoot>");
write("<tr>");
write("<th>Totales</th>");
write("<th>" + parseInt(cont1 + cont2 + cont3) + "</th>");
write("<th>" + (parseFloat(per1 + per2 + per3)) * 100 + " %</th>");
write("</tr>");
write("</tfoot>");
write("</table>");
write("</div>");
write("</div>");
}

Vuelo a plantear la pregunta. Lo que quisiera es poder agregar ademas del voto, tambien el nombre de la persona y mostrarla al finalizar en la tabla
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 40
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Guardar datos en una tabla mediante prompt

Publicado por Marlon (90 intervenciones) el 04/10/2022 07:05:52
Hola, bueno creo que para eso necesitarías un Array, yo lo hice de la siguiente forma:

primero agregue las variables nombre y votantes

1
2
var nombre;
var votantes = []; //declaro un array vacio

Después dentro del While agregue lo siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
while (opcion == true) {
        nombre = (prompt('¿Cuál es su nombre?', ''));
        voto = parseInt(prompt('¿Cuál es su voto?', ''));
        switch (voto) {
            case 1:
            cont1++;
            break;
            case 2:
            cont2++;
            break;
            case 3:
            cont3++;
            break;
            default:
            alert('¡Voto no válido!');
        }
        //aquí mediante el metodo push agrego al array un objeto con el nombre de la persona y su voto.
        votantes.push({'nombre' : nombre, 'voto' : voto})
        //Se pregunta si se desea terminar la encuesta o continuar
        opcion = confirm('¿Desea continuar s/n?');
    }

Y ya por ultimo al final de la tabla agregue lo siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
write("<td>votantes</td>");
write("</tr>");
write("<tr>");
write("<td>Nombre</td>");
write("<td>Voto</td>");
write("</tr>");
//aqui con el metedo forEach recorremos cada posición del array para agregarlo a la tabla.
votantes.forEach(element => { //element es cada objeto que se creo dentro del array. por ejemplo {'pedro', 2} o {'pablo', 3}
    write("<tr>");
    write("<td>"+ element.nombre +"</td>"); //aquí invocamos cada nombre de cada votante.
    write("<td>"+ element.voto +"</td>"); //aquí invocamos cada voto de cada votante.
    write("</tr>");
});

Esta es una forma de hacerlo.
Si no quieres usar un arreglo lo que tendrías que hacer es que en cada ciclo del while imprimir en el documento las variables nombre y voto....
Espero esto te sirva y cualquier cosa pregunta de nuevo, estamos para ayudarnos. Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Guardar datos en una tabla mediante prompt

Publicado por jrc (5 intervenciones) el 05/10/2022 20:32:03
Hola amigo, me sirvio mucho solamente que tengo un problema, nose porque solamente me ingresa en la tabla el ultimo nombre que yo agregue y el resto que agrego me lo pone afuera

Aqui dejo el codigo de como lo tengo:

//Declaración de variables
var nombre;
var votantes = [];
var voto;
var opcion = true;
var cont1 = cont2 = cont3 = 0;
var total;
var per1, per2, per3;
//Mostrar las instrucciones para responder
document.write("<div class=\"container\">");
document.write("<div class=\"row\">");
document.write("<h1 class=\"text-center\">");
document.write("Ventas");
document.write("</h1>");
document.write("</div>");
document.write("</div>");
//Ciclo repetitivo infinito donde se captura voto por voto
//en tanto no se de por terminada el ingreso de respuesta de la encuesta
while (opcion == true) {
nombre = (prompt('¿Cuál es su nombre?', ''));
voto = parseInt(prompt('¿Cuál es su voto?', ''));
switch (voto) {
case 1:
cont1++;
break;
case 2:
cont2++;
break;
case 3:
cont3++;
break;
default:
alert('¡Voto no válido!');
}
//aquí mediante el metodo push agrego al array un objeto con el nombre de la persona y su voto.
votantes.push({'nombre' : nombre, 'voto' : voto})
//Se pregunta si se desea terminar la encuesta o continuar
opcion = confirm('¿Desea continuar s/n?');
}
//Obtener el total de respuestas de la encuesta
total = cont1 + cont2 + cont3;
//Obtener el porcentajes de la primera respuesta
per1 = Math.round((cont1 / total) * Math.pow(10, 2)) / Math.pow(10, 2);
//Obtener el porcentajes de la segunda respuesta
per2 = Math.round((cont2 / total) * Math.pow(10, 2)) / Math.pow(10, 2);
//Obtener el porcentajes de la tercera respuesta
per3 = Math.round((cont3 / total) * Math.pow(10, 2)) / Math.pow(10, 2);
//Mostrar los resultados de la encuesta
with (document) {
write("<div class=\"container\">");
write("<div class=\"row\">");
write("<table class=\"table table-primary table-striped table-hover\">");
write("<thead>");
write("<tr>");
write("<td>Nombre</td>");
write("<td>voto</td>");
write("</tr>");
write("</thead>");
write("<tbody>");
//aqui con el metedo forEach recorremos cada posición del array para agregarlo a la tabla.
votantes.forEach(element => {
write("<tr>");
write("<td>" + element.nombre + "</td>");
write("<td>" + element.voto + "</td>");
write("</tr>");
write("</tbody>");
write("<tfoot>");
write("<tr>");
write("<th>Totales</th>");
write("<th>" + parseInt(cont1 + cont2 + cont3) + "</th>");
write("</tr>");
write("</tfoot>");
write("</table>");
write("</div>");
write("</div>");
});
}



Y lo que me refiero que me muestra, he ingresado dos nombres, primero Pedro y luego Juan y me muestra que solamete adentro de la tabla el ultimo que ingrese que en este caso es Juan, y pedro junto con su voto lo muestra afuera
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 40
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Guardar datos en una tabla mediante prompt

Publicado por Marlon (90 intervenciones) el 05/10/2022 22:38:30
Es porque estas cerrando el la TABLE y los DIV dentro del forEach cuando solamente deberia ir el TR de cada votante

1
2
3
4
5
6
votantes.forEach(element => {
write("<tr>");
write("<td>" + element.nombre + "</td>");
write("<td>" + element.voto + "</td>");
write("</tr>");
});
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Guardar datos en una tabla mediante prompt

Publicado por jrc (5 intervenciones) el 06/10/2022 07:08:12
Muchas gracias, aún estoy aprendiendo y se me complica entender aún sobre la logica y como entender este lenguaje, pero eso era todo, gracias por compartir tu ayuda!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar