Foros del Web » Programando para Internet » Javascript »

Atasco con codigo de sorteo

Estas en el tema de Atasco con codigo de sorteo en el foro de Javascript en Foros del Web. Hola a todos, Soy nuevo aqui y estoy empezando a curiosear con la programacion y me plantee hacer un codigo para un sorteo en el ...
  #1 (permalink)  
Antiguo 02/04/2015, 13:50
 
Fecha de Ingreso: abril-2015
Mensajes: 6
Antigüedad: 9 años, 1 mes
Puntos: 0
Pregunta Atasco con codigo de sorteo

Hola a todos,

Soy nuevo aqui y estoy empezando a curiosear con la programacion y me plantee hacer un codigo para un sorteo en el que varias personas obtienen una puntuacion y el la idea seria:

1.Recoger todos los nombres y puntuaciones,
2.Comparar las puntuaciones de todos en busca del mayor,
3.Ordenar las puntuaciones de mayor a menor
4.Adjuntar al lado de la puntuacion el nombre del jugador que la saco con el fin de saber el orden de los ganadores

Pues he estado unos dias buscando y leyendo pero no he podido finalizar el algoritmo, tengo problemas programar cual es el mayor, aun estoy muy verde. Os paso el codigo de como estaba haciendolo y asi ya me podeis gritar y decir que qué cojones estaba haciendo...xD. Aqui os lo dejo:

var a, a1, b, b2, c, c3, d, d4, e, e5 , f, f6, g, g7, h, h8, i, i9, j, j10, k, k11, l, l12, m, m13, n, n14, o, o15;//aqui son los 30 cuadros de texto, 15 por nombres y 15 por puntuacion
var z;//var para el boton y que dispare la funcion sortear()

function inicio()
{
a = document.getElementById("jugador1");
a1 = document.getElementById("puntuacion1");

b = document.getElementById("jugador2");
b2 = document.getElementById("puntuacion2");

c = document.getElementById("jugador3");
c3 = document.getElementById("puntuacion3");

d = document.getElementById("jugador4");
d4 = document.getElementById("puntuacion4");

e = document.getElementById("jugador5");
e5 = document.getElementById("puntuacion5");

f = document.getElementById("jugador6");
f6 = document.getElementById("puntuacion6");

g = document.getElementById("jugador7");
g7 = document.getElementById("puntuacion7");

h = document.getElementById("jugador8");
h8 = document.getElementById("puntuacion8");

i = document.getElementById("jugador9");
i9 = document.getElementById("puntuacion9");

j = document.getElementById("jugador10");
j10 = document.getElementById("puntuacion10");

k = document.getElementById("jugador11");
k11 = document.getElementById("puntuacion11");

l = document.getElementById("jugador12");
l12 = document.getElementById("puntuacion12");

m = document.getElementById("jugador13");
m13 = document.getElementById("puntuacion13");

n = document.getElementById("jugador14");
n14 = document.getElementById("puntuacion14");

o = document.getElementById("jugador15");
o15 = document.getElementById("puntuacion15");

z = document.getElementById("boton");
z.addEventListener("click", sortear);

}

function sortear()//y en esta ecuacion me pierdo, pero hice array y empece ciclo
{
var puntuaciones = [a1.value , b2.value, c3.value, d4.value, e5.value, f6.value, g7.value, h8.value, i9.value, j10.value, k11.value, l12.value, m13.value, n14.value, o15.value];
var ganador = "";
var resultado = puntuaciones[i];
resultado = parseInt();
var participantes = puntuaciones.length;
var posicion;


for(posicion = 0; posicion<= participantes; posicion++)
{
if(resultado != posicion)
{

}

}

}

--------------------------------------------------------------------------
Hasta aqui he llegado,si alguien me pudiera ayudar, me dijera donde mirar y que buscar lo agradeceria.
Un saludo
  #2 (permalink)  
Antiguo 02/04/2015, 14:02
Avatar de NueveReinas  
Fecha de Ingreso: septiembre-2013
Ubicación: No tan Buenos Aires
Mensajes: 1.101
Antigüedad: 10 años, 7 meses
Puntos: 145
Respuesta: Atasco con codigo de sorteo

Bienvenido.

Por favor, usa el Highlight que proporciona el foro para no tener que leer el código en texto plano.

En ningún momento veo un código de aleatoriedad...
__________________
¿Te sirvió la respuesta? Deja un +1
  #3 (permalink)  
Antiguo 02/04/2015, 14:39
 
Fecha de Ingreso: abril-2015
Mensajes: 6
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Atasco con codigo de sorteo

Perdon por el highlight. Ya esta. Y en cuanto a codigo de aleatoriedad a que te refieres? No lo he terminado, no lo he empezado se podria decir, asi que seguro q faltaran muxas cosas. Lo que no se es como comparar cada una de las posiciones con cada una de las otras posiciones, que te diga cual es mayor y que te las escriba ordenadas. Vamos un cacao, gracias por la respuesta
Un saludo

Código Javascript:
Ver original
  1. var a, a1, b, b2, c, c3, d, d4, e, e5 , f, f6, g, g7, h, h8, i, i9, j, j10, k, k11, l, l12, m, m13, n, n14, o, o15;//aqui son los 30 cuadros de texto, 15 por nombres y 15 por puntuacion
  2. var z;//var para el boton y que dispare la funcion sortear()
  3.  
  4. function inicio()
  5. {
  6. a = document.getElementById("jugador1");
  7. a1 = document.getElementById("puntuacion1");
  8.  
  9. b = document.getElementById("jugador2");
  10. b2 = document.getElementById("puntuacion2");
  11.  
  12. c = document.getElementById("jugador3");
  13. c3 = document.getElementById("puntuacion3");
  14.  
  15. d = document.getElementById("jugador4");
  16. d4 = document.getElementById("puntuacion4");
  17.  
  18. e = document.getElementById("jugador5");
  19. e5 = document.getElementById("puntuacion5");
  20.  
  21. f = document.getElementById("jugador6");
  22. f6 = document.getElementById("puntuacion6");
  23.  
  24. g = document.getElementById("jugador7");
  25. g7 = document.getElementById("puntuacion7");
  26.  
  27. h = document.getElementById("jugador8");
  28. h8 = document.getElementById("puntuacion8");
  29.  
  30. i = document.getElementById("jugador9");
  31. i9 = document.getElementById("puntuacion9");
  32.  
  33. j = document.getElementById("jugador10");
  34. j10 = document.getElementById("puntuacion10");
  35.  
  36. k = document.getElementById("jugador11");
  37. k11 = document.getElementById("puntuacion11");
  38.  
  39. l = document.getElementById("jugador12");
  40. l12 = document.getElementById("puntuacion12");
  41.  
  42. m = document.getElementById("jugador13");
  43. m13 = document.getElementById("puntuacion13");
  44.  
  45. n = document.getElementById("jugador14");
  46. n14 = document.getElementById("puntuacion14");
  47.  
  48. o = document.getElementById("jugador15");
  49. o15 = document.getElementById("puntuacion15");
  50.  
  51. z = document.getElementById("boton");
  52. z.addEventListener("click", sortear);
  53.  
  54. }
  55.  
  56. function sortear()//y en esta ecuacion me pierdo, pero hice array y empece ciclo
  57. {
  58. var puntuaciones = [a1.value , b2.value, c3.value, d4.value, e5.value, f6.value, g7.value, h8.value, i9.value, j10.value, k11.value, l12.value, m13.value, n14.value, o15.value];
  59. var ganador = "";
  60. var resultado = puntuaciones[i];
  61. resultado = parseInt();
  62. var participantes = puntuaciones.length;
  63. var posicion;
  64.  
  65.  
  66. for(posicion = 0; posicion<= participantes; posicion++)
  67. {
  68. if(resultado != posicion)
  69. {
  70.  
  71. }
  72.  
  73. }
  74.  
  75. }
  #4 (permalink)  
Antiguo 02/04/2015, 14:49
Avatar de NueveReinas  
Fecha de Ingreso: septiembre-2013
Ubicación: No tan Buenos Aires
Mensajes: 1.101
Antigüedad: 10 años, 7 meses
Puntos: 145
Respuesta: Atasco con codigo de sorteo

Me refiero a que veo que solo tomas los valores de, imagino, inputs de un form, pero no les das aleatoriedad. Empecemos por eso...
__________________
¿Te sirvió la respuesta? Deja un +1
  #5 (permalink)  
Antiguo 02/04/2015, 14:52
 
Fecha de Ingreso: septiembre-2008
Mensajes: 38
Antigüedad: 15 años, 7 meses
Puntos: 2
Mételos en un arreglo o ordénalos.... Hay métodos que te pueden ayudar... Intenta/investiga del ordenamiento burbuja... Ánimo
  #6 (permalink)  
Antiguo 02/04/2015, 17:14
 
Fecha de Ingreso: abril-2015
Mensajes: 6
Antigüedad: 9 años, 1 mes
Puntos: 0
Pregunta Respuesta: Atasco con codigo de sorteo

Bueno esto es lo que he averiguado pero por ahora me salen ordenados pero alfabeticamente con el sort, y los quiero ordenar como numeors, lo he intentado con parseInt pero nada.
Y como aclaracion, no uso aleatorio porque las puntuaciones las cojo yo de otra parte y las escribo en las cajas de texto de HTML
Un saludo y gracia spor las respuestas


Código Javascript:
Ver original
  1. var a, a1, b, b2, c, c3, d, d4, e, e5 , f, f6, g, g7, h, h8, i, i9, j, j10, k, k11, l, l12, m, m13, n, n14, o, o15;//aqui son los 30 cuadros de texto, 15 por nombres y 15 por puntuacion
  2. var z;//var para el boton y que dispare la funcion sortear()
  3.  
  4. function inicio()
  5. {
  6.     a = document.getElementById("jugador1");
  7.     a1 = document.getElementById("puntuacion1");
  8.  
  9.     b = document.getElementById("jugador2");
  10.     b2 = document.getElementById("puntuacion2");
  11.  
  12.     c = document.getElementById("jugador3");
  13.     c3 = document.getElementById("puntuacion3");
  14.  
  15.     d = document.getElementById("jugador4");
  16.     d4 = document.getElementById("puntuacion4");
  17.  
  18.     e = document.getElementById("jugador5");
  19.     e5 = document.getElementById("puntuacion5");
  20.  
  21.     f = document.getElementById("jugador6");
  22.     f6 = document.getElementById("puntuacion6");
  23.  
  24.     g = document.getElementById("jugador7");
  25.     g7 = document.getElementById("puntuacion7");
  26.  
  27.     h = document.getElementById("jugador8");
  28.     h8 = document.getElementById("puntuacion8");
  29.  
  30.     i = document.getElementById("jugador9");
  31.     i9 = document.getElementById("puntuacion9");
  32.  
  33.     j = document.getElementById("jugador10");
  34.     j10 = document.getElementById("puntuacion10");
  35.  
  36.     k = document.getElementById("jugador11");
  37.     k11 = document.getElementById("puntuacion11");
  38.  
  39.     l = document.getElementById("jugador12");
  40.     l12 = document.getElementById("puntuacion12");
  41.  
  42.     m = document.getElementById("jugador13");
  43.     m13 = document.getElementById("puntuacion13");
  44.  
  45.     n = document.getElementById("jugador14");
  46.     n14 = document.getElementById("puntuacion14");
  47.  
  48.     o = document.getElementById("jugador15");
  49.     o15 = document.getElementById("puntuacion15");
  50.  
  51.     z = document.getElementById("boton");
  52.     z.addEventListener("click", sortear);
  53.  
  54.  
  55. }
  56.  
  57. function sortear()//y en esta ecuacion me pierdo, pero hice array y empece ciclo
  58. {  
  59.     var puntuaciones = [a1.value , b2.value, c3.value, d4.value, e5.value, f6.value, g7.value, h8.value, i9.value, j10.value, k11.value, l12.value, m13.value, n14.value, o15.value];
  60.     var ganador = document.write(puntuaciones.sort(sortn));
  61.     ganador = parseInt();
  62.     var resultado = puntuaciones[posicion];
  63.     resultado = parseInt();
  64.     var participantes = puntuaciones.length;
  65.     var posicion;
  66.  
  67.     //alert(puntuaciones.sort())
  68.  
  69.     //for(posicion = 0; posicion<= participantes; posicion++)
  70.     //{
  71.         function sortn(x,y)
  72.         {
  73.        
  74.             if(x>y)
  75.             {
  76.                 return -1;
  77.             }
  78.             else if(x == y)
  79.             {
  80.                 return 0;
  81.             }
  82.             else
  83.             {
  84.                 return 1;
  85.             }
  86.         }
  87.         ganador;
  88.     //}
  #7 (permalink)  
Antiguo 02/04/2015, 23:57
Avatar de Dafonz  
Fecha de Ingreso: octubre-2009
Mensajes: 127
Antigüedad: 14 años, 6 meses
Puntos: 36
Respuesta: Atasco con codigo de sorteo

Creo que te la estas complicando de mas.

Código Javascript:
Ver original
  1. var app = function() {
  2.     // inicializamos el arreglo de objetos con objeto tipo nombre, puntuacion
  3.   var jugadores = [
  4.       {
  5.           nombre: 'Juan',
  6.           puntuacion: 8
  7.       },
  8.       {
  9.           nombre: 'Pedro',
  10.           puntuacion: 6
  11.       },
  12.       {
  13.           nombre: 'Maria',
  14.           puntuacion: 7
  15.       }
  16.   ];
  17.  
  18.     // ordenamos el arreglo con una funcion que compare la propiedad puntacion
  19.    var ordenar = function() {
  20.       return jugadores.sort(function(a, b){
  21.           return a.puntuacion < b.puntuacion
  22.       });
  23.     };
  24.  
  25.     // se manda llamar al ordenar desde que se corre funcion
  26.     jugadores = ordenar();
  27.  
  28.     // se retorna objeto con 2 metodos que accesaran variables en closure para obtener datos necesarios
  29.     return {
  30.         obtenerGanador: function () {
  31.             return jugadores[0];
  32.         },
  33.         obtenerJugadoresOrdenados: function () {
  34.             return jugadores;
  35.         }
  36.     };
  37. };

Para correlo solo basta

Código Javascript:
Ver original
  1. var b = app();
  2. b.obtenerGanador() // Object {nombre: "Juan", puntuacion: 8}
  3. b.obtenerJugadoresOrdenados() //array ordenado de objetos

Puede ser que lo del closure sea de mas para alguien empezando (aunque te recomiendo que leas un poco sobre eso), pero la idea es guardar las variables en objetos y no en variables independientes y usar el mismo sort que ofrece el lenguaje solo mandandole una simple funcion custom que ordene el array.

Ahora para llenar el array si tienes algo como jugador1, puntacion1
Mejor ponles alguna clase y con un query selector agarras todo y armas el array de objects con los valores

Última edición por Dafonz; 03/04/2015 a las 00:03
  #8 (permalink)  
Antiguo 04/04/2015, 10:44
 
Fecha de Ingreso: abril-2015
Mensajes: 6
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Atasco con codigo de sorteo

Hola a todos y muchas gracias por vuestras respuestas
Al final he conseguido que funcionara pero no se si el codigo es el mas eficaz que se podria usar. Con esto lo que hago es capturar las tiradas del sorteo con los nombres ya hechas por otro lado y las introduzco en las cajas de texto y al darle al boton Aceptar me ordena las puntuaciones que yo le he metido de mayor a menor y a continuacion añade el nombre de su tirador al lado en mayus.
Os paso el codigo ahroa completo y me decis si os gusta o no. Tened en cuenta que llevo viendo videos 1 mes y no habia hecho esto antes, no seais muy duros jeje
Un saludo y gracias
Código Javascript:
Ver original
  1. var a, a1, b, b2, c, c3, d, d4, e, e5 , f, f6, g, g7, h, h8, i, i9, j, j10, k, k11, l, l12, m, m13, n, n14, o, o15;//aqui son los 30 cuadros de texto, 15 por nombres y 15 por puntuacion
  2. var z;//var para el boton y que dispare la funcion sortear()
  3. var mayus = new String(a.value, b.value, c.value, d.value, e.value, f.value, g.value, h.value, i.value, j.value, k.value, l.value, m.value, n.value, o.value);
  4.    
  5. function inicio()
  6. {
  7.    
  8.     a = document.getElementById("jugador1");
  9.     a1 = document.getElementById("puntuacion1");
  10.  
  11.     b = document.getElementById("jugador2");
  12.     b2 = document.getElementById("puntuacion2");
  13.  
  14.     c = document.getElementById("jugador3");
  15.     c3 = document.getElementById("puntuacion3");
  16.  
  17.     d = document.getElementById("jugador4");
  18.     d4 = document.getElementById("puntuacion4");
  19.  
  20.     e = document.getElementById("jugador5");
  21.     e5 = document.getElementById("puntuacion5");
  22.  
  23.     f = document.getElementById("jugador6");
  24.     f6 = document.getElementById("puntuacion6");
  25.  
  26.     g = document.getElementById("jugador7");
  27.     g7 = document.getElementById("puntuacion7");
  28.  
  29.     h = document.getElementById("jugador8");
  30.     h8 = document.getElementById("puntuacion8");
  31.  
  32.     i = document.getElementById("jugador9");
  33.     i9 = document.getElementById("puntuacion9");
  34.  
  35.     j = document.getElementById("jugador10");
  36.     j10 = document.getElementById("puntuacion10");
  37.  
  38.     k = document.getElementById("jugador11");
  39.     k11 = document.getElementById("puntuacion11");
  40.  
  41.     l = document.getElementById("jugador12");
  42.     l12 = document.getElementById("puntuacion12");
  43.  
  44.     m = document.getElementById("jugador13");
  45.     m13 = document.getElementById("puntuacion13");
  46.  
  47.     n = document.getElementById("jugador14");
  48.     n14 = document.getElementById("puntuacion14");
  49.  
  50.     o = document.getElementById("jugador15");
  51.     o15 = document.getElementById("puntuacion15");
  52.  
  53.     z = document.getElementById("boton");
  54.     z.addEventListener("click", sortear);
  55.  
  56.  
  57. }
  58.  
  59. function sortn(x,y)
  60. {
  61.     if(x>y)
  62.  
  63.         return -1;
  64.  
  65.     else if(x == y)
  66.    
  67.         return 0;
  68.    
  69.     else
  70.    
  71.         return 1;
  72.    
  73. }
  74.  
  75. function sortear()//y en esta ecuacion me pierdo, pero hice array y empece ciclo
  76. {  
  77.  
  78.     var puntuaciones = new Array(15);
  79.     puntuaciones[0] = a.value.toUpperCase() + " " + new Number(a1.value);
  80.     puntuaciones[1] = b.value.toUpperCase() + " " + new Number(b2.value);
  81.     puntuaciones[2] = c.value.toUpperCase() + " " + new Number(c3.value);
  82.     puntuaciones[3] = d.value.toUpperCase() + " " + new Number(d4.value);
  83.     puntuaciones[4] = e.value.toUpperCase() + " " + new Number(e5.value);
  84.     puntuaciones[5] = f.value.toUpperCase() + " " + new Number(f6.value);
  85.     puntuaciones[6] = g.value.toUpperCase() + " " + new Number(g7.value);
  86.     puntuaciones[7] = h.value.toUpperCase() + " " + new Number(h8.value);
  87.     puntuaciones[8] = i.value.toUpperCase() + " " + new Number(i9.value);
  88.     puntuaciones[9] = j.value.toUpperCase() + " " + new Number(j10.value);
  89.     puntuaciones[10] = k.value.toUpperCase() + " " + new Number(k11.value);
  90.     puntuaciones[11] = l.value.toUpperCase() + " " + new Number(l12.value);
  91.     puntuaciones[12] = m.value.toUpperCase() + " " + new Number(m13.value);
  92.     puntuaciones[13] = n.value.toUpperCase() + " " + new Number(n14.value);
  93.     puntuaciones[14] = o.value.toUpperCase() + " " + new Number(o15.value);
  94.    
  95.     var ganador = puntuaciones.sort(sortn);
  96.     var resultado = document.write(ganador);
  97.    
  98.  
  99.     resultado;
  100.  
  101. }

Aqui os dejo el HTML para que lo podais probar:
Código HTML:
Ver original
  1. <!DOCTYPE HTML>
  2.     <meta charset="utf-8" />
  3.     <title></title>
  4.     <script type="text/javascript" src="sorteo.js">
  5.     </script>
  6. </head>
  7.     <h1>Sorteo</h1>
  8.     <p>Escribe aquí el nombre del jugador:
  9.     <input type="text" id="jugador1"/>
  10.     Escribe aquí la puntuacion obtenida:
  11.     <input type="text" id="puntuacion1"/>
  12.     <br/>
  13.     Escribe aquí el nombre del jugador:
  14.     <input type="text" id="jugador2"/>
  15.     Escribe aquí la puntuacion obtenida:
  16.     <input type="text" id="puntuacion2"/>
  17.     <br/>
  18.     Escribe aquí el nombre del jugador:
  19.     <input type="text" id="jugador3"/>
  20.     Escribe aquí la puntuacion obtenida:
  21.     <input type="text" id="puntuacion3"/>
  22.     <br/>
  23.     Escribe aquí el nombre del jugador:
  24.     <input type="text" id="jugador4"/>
  25.     Escribe aquí la puntuacion obtenida:
  26.     <input type="text" id="puntuacion4"/>
  27.     <br/>
  28.     Escribe aquí el nombre del jugador:
  29.     <input type="text" id="jugador5"/>
  30.     Escribe aquí la puntuacion obtenida:
  31.     <input type="text" id="puntuacion5"/>
  32.     <br/>
  33.     Escribe aquí el nombre del jugador:
  34.     <input type="text" id="jugador6"/>
  35.     Escribe aquí la puntuacion obtenida:
  36.     <input type="text" id="puntuacion6"/>
  37.     <br/>
  38.     Escribe aquí el nombre del jugador:
  39.     <input type="text" id="jugador7"/>
  40.     Escribe aquí la puntuacion obtenida:
  41.     <input type="text" id="puntuacion7"/>
  42.     <br/>
  43.     Escribe aquí el nombre del jugador:
  44.     <input type="text" id="jugador8"/>
  45.     Escribe aquí la puntuacion obtenida:
  46.     <input type="text" id="puntuacion8"/>
  47.     <br/>
  48.     Escribe aquí el nombre del jugador:
  49.     <input type="text" id="jugador9"/>
  50.     Escribe aquí la puntuacion obtenida:
  51.     <input type="text" id="puntuacion9"/>
  52.     <br/>
  53.     Escribe aquí el nombre del jugador:
  54.     <input type="text" id="jugador10"/>
  55.     Escribe aquí la puntuacion obtenida:
  56.     <input type="text" id="puntuacion10"/>
  57.     <br/>
  58.     Escribe aquí el nombre del jugador:
  59.     <input type="text" id="jugador11"/>
  60.     Escribe aquí la puntuacion obtenida:
  61.     <input type="text" id="puntuacion11"/>
  62.     <br/>
  63.     Escribe aquí el nombre del jugador:
  64.     <input type="text" id="jugador12"/>
  65.     Escribe aquí la puntuacion obtenida:
  66.     <input type="text" id="puntuacion12"/>
  67.     <br/>
  68.     Escribe aquí el nombre del jugador:
  69.     <input type="text" id="jugador13"/>
  70.     Escribe aquí la puntuacion obtenida:
  71.     <input type="text" id="puntuacion13"/>
  72.     <br/>
  73.     Escribe aquí el nombre del jugador:
  74.     <input type="text" id="jugador14"/>
  75.     Escribe aquí la puntuacion obtenida:
  76.     <input type="text" id="puntuacion14"/>
  77.     <br/>
  78.     Escribe aquí el nombre del jugador:
  79.     <input type="text" id="jugador15"/>
  80.     Escribe aquí la puntuacion obtenida:
  81.     <input type="text" id="puntuacion15"/>
  82.  
  83.     </p>
  84.     <h2>
  85.         <input type="button" id="boton" value="Aceptar"/>
  86.     </h2>
  87.     <script type="text/javascript">
  88.     inicio();
  89.     </script>
  90. </body>
  91. </html>
  #9 (permalink)  
Antiguo 11/04/2015, 02:49
 
Fecha de Ingreso: abril-2015
Mensajes: 6
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Atasco con codigo de sorteo

Hola a todos de nuevo
Queria comentaros que el codigo me va bien pero la verdad es que el sort(sortn) me falla con el array puntuaciones pues interpreta las palabras primero en vez de los numeros, y solo me pasa con ciertos numeros o ciertas palabras y solo un error en toda la lista.
Quiero decirle a la funcion sort(sortn) q interprete los numeros primero siempre y en todo caso pero no se como hacerlo. Alguna idea?

Por cierto, gracias Dafonz por el aporte pero probe tu codigo y no me funcionaba, seguro que estoy haciendo algo mal pero me saltaba error en lo de los 2 metodos en closure, obtenerJugadores y obtenerJugadoresOrdenados y simplemente no funcionaba nada

Un saludo y gracias de antemano
  #10 (permalink)  
Antiguo 13/04/2015, 04:14
 
Fecha de Ingreso: abril-2015
Mensajes: 6
Antigüedad: 9 años, 1 mes
Puntos: 0
Pregunta Atasco con codigo sorteo 2

Hola
Ya postee un anterior codigo y crei que lo habia solucionado pero ahora me ha surgido otro problema. Como utilice el sort para ordenar las puntuaciones de mayor a menor tuve que añadirle al array tambien los nombres de los jugadores por lo que no me ordena los numeros correctamente, y por ende los nombres tampoco.
Lo que es mas extraño es la forma que tiene de ordenarlos y que solo pase con ciertos numeros, uno en toda la lista quizas.

Os dejo aqui el codigo para que, si vosotros sabeis cómo, no tenga que cambiarlo mucho pero que me lo ordene siempre. Primero os dejo el HTML asi lo podeis probar:
Código HTML:
Ver original
  1. <!DOCTYPE HTML>
  2.     <meta charset="utf-8" />
  3.     <title></title>
  4.     <script type="text/javascript" src="sorteo.js">
  5.     </script>
  6. </head>
  7.     <h1>Sorteo</h1>
  8.     <p>Escribe aquí el nombre del jugador:
  9.     <input type="text" id="jugador1"/>
  10.     Escribe aquí la puntuacion obtenida:
  11.     <input type="text" id="puntuacion1"/>
  12.     <br/>
  13.     Escribe aquí el nombre del jugador:
  14.     <input type="text" id="jugador2"/>
  15.     Escribe aquí la puntuacion obtenida:
  16.     <input type="text" id="puntuacion2"/>
  17.     <br/>
  18.     Escribe aquí el nombre del jugador:
  19.     <input type="text" id="jugador3"/>
  20.     Escribe aquí la puntuacion obtenida:
  21.     <input type="text" id="puntuacion3"/>
  22.     <br/>
  23.     Escribe aquí el nombre del jugador:
  24.     <input type="text" id="jugador4"/>
  25.     Escribe aquí la puntuacion obtenida:
  26.     <input type="text" id="puntuacion4"/>
  27.     <br/>
  28.     Escribe aquí el nombre del jugador:
  29.     <input type="text" id="jugador5"/>
  30.     Escribe aquí la puntuacion obtenida:
  31.     <input type="text" id="puntuacion5"/>
  32.     <br/>
  33.     Escribe aquí el nombre del jugador:
  34.     <input type="text" id="jugador6"/>
  35.     Escribe aquí la puntuacion obtenida:
  36.     <input type="text" id="puntuacion6"/>
  37.     <br/>
  38.     Escribe aquí el nombre del jugador:
  39.     <input type="text" id="jugador7"/>
  40.     Escribe aquí la puntuacion obtenida:
  41.     <input type="text" id="puntuacion7"/>
  42.     <br/>
  43.     Escribe aquí el nombre del jugador:
  44.     <input type="text" id="jugador8"/>
  45.     Escribe aquí la puntuacion obtenida:
  46.     <input type="text" id="puntuacion8"/>
  47.     <br/>
  48.     Escribe aquí el nombre del jugador:
  49.     <input type="text" id="jugador9"/>
  50.     Escribe aquí la puntuacion obtenida:
  51.     <input type="text" id="puntuacion9"/>
  52.     <br/>
  53.     Escribe aquí el nombre del jugador:
  54.     <input type="text" id="jugador10"/>
  55.     Escribe aquí la puntuacion obtenida:
  56.     <input type="text" id="puntuacion10"/>
  57.     <br/>
  58.     Escribe aquí el nombre del jugador:
  59.     <input type="text" id="jugador11"/>
  60.     Escribe aquí la puntuacion obtenida:
  61.     <input type="text" id="puntuacion11"/>
  62.     <br/>
  63.     Escribe aquí el nombre del jugador:
  64.     <input type="text" id="jugador12"/>
  65.     Escribe aquí la puntuacion obtenida:
  66.     <input type="text" id="puntuacion12"/>
  67.     <br/>
  68.     Escribe aquí el nombre del jugador:
  69.     <input type="text" id="jugador13"/>
  70.     Escribe aquí la puntuacion obtenida:
  71.     <input type="text" id="puntuacion13"/>
  72.     <br/>
  73.     Escribe aquí el nombre del jugador:
  74.     <input type="text" id="jugador14"/>
  75.     Escribe aquí la puntuacion obtenida:
  76.     <input type="text" id="puntuacion14"/>
  77.     <br/>
  78.     Escribe aquí el nombre del jugador:
  79.     <input type="text" id="jugador15"/>
  80.     Escribe aquí la puntuacion obtenida:
  81.     <input type="text" id="puntuacion15"/>
  82.  
  83.     </p>
  84.     <h2>
  85.         <input type="button" id="boton" value="Aceptar"/>
  86.     </h2>
  87.     <script type="text/javascript">
  88.     inicio();
  89.     </script>
  90. </body>
  91. </html>
------------------------------------------------------------------------------------

Aqui os dejo el js que yo llamo sorteo.js:

Código Javascript:
Ver original
  1. var a, a1, b, b2, c, c3, d, d4, e, e5 , f, f6, g, g7, h, h8, i, i9, j, j10, k, k11, l, l12, m, m13, n, n14, o, o15;//aqui son los 30 cuadros de texto, 15 por nombres y 15 por puntuacion
  2. var z;//var para el boton y que dispare la funcion sortear()
  3. function inicio()
  4. {
  5.  
  6. a = document.getElementById("jugador1");
  7. a1 = document.getElementById("puntuacion1");
  8.  
  9.  
  10. b = document.getElementById("jugador2");
  11. b2 = document.getElementById("puntuacion2");
  12.  
  13.  
  14.  
  15. c = document.getElementById("jugador3");
  16. c3 = document.getElementById("puntuacion3");
  17.  
  18.  
  19.  
  20. d = document.getElementById("jugador4");
  21. d4 = document.getElementById("puntuacion4");
  22.  
  23. e = document.getElementById("jugador5");
  24. e5 = document.getElementById("puntuacion5");
  25.  
  26. f = document.getElementById("jugador6");
  27. f6 = document.getElementById("puntuacion6");
  28.  
  29. g = document.getElementById("jugador7");
  30. g7 = document.getElementById("puntuacion7");
  31.  
  32. h = document.getElementById("jugador8");
  33. h8 = document.getElementById("puntuacion8");
  34.  
  35. i = document.getElementById("jugador9");
  36. i9 = document.getElementById("puntuacion9");
  37.  
  38. j = document.getElementById("jugador10");
  39. j10 = document.getElementById("puntuacion10");
  40.  
  41. k = document.getElementById("jugador11");
  42. k11 = document.getElementById("puntuacion11");
  43.  
  44. l = document.getElementById("jugador12");
  45. l12 = document.getElementById("puntuacion12");
  46.  
  47. m = document.getElementById("jugador13");
  48. m13 = document.getElementById("puntuacion13");
  49.  
  50. n = document.getElementById("jugador14");
  51. n14 = document.getElementById("puntuacion14");
  52.  
  53. o = document.getElementById("jugador15");
  54. o15 = document.getElementById("puntuacion15");
  55.  
  56. z = document.getElementById("boton");
  57. z.addEventListener("click", sortear);
  58.  
  59.  
  60. }
  61.  
  62. function sortn(x,y)
  63. {
  64.  
  65. if(x>y)
  66.  
  67. return -1;
  68.  
  69. else if(x == y)
  70.  
  71. return 0;
  72.  
  73. else
  74.  
  75. return 1;
  76.  
  77. }
  78.  
  79. function sortear()
  80. {  
  81.  
  82.  
  83. var puntuaciones = new Array(15);
  84. puntuaciones[0] = (parseInt(a1.value)*1) + " = " + a.value.toUpperCase();
  85. puntuaciones[1] = (parseInt(b2.value)*1) + " = " + b.value.toUpperCase();
  86. puntuaciones[2] = (parseInt(c3.value)*1) + " = " + c.value.toUpperCase();
  87. puntuaciones[3] = (parseInt(d4.value)*1) + " = " + d.value.toUpperCase();
  88. puntuaciones[4] = (parseInt(e5.value)*1) + " = " + e.value.toUpperCase();
  89. puntuaciones[5] = (parseInt(f6.value)*1) + " = " + f.value.toUpperCase();
  90. puntuaciones[6] = (parseInt(g7.value)*1) + " = " + g.value.toUpperCase();
  91. puntuaciones[7] = (parseInt(h8.value)*1) + " = " + h.value.toUpperCase();
  92. puntuaciones[8] = (parseInt(i9.value)*1) + " = " + i.value.toUpperCase();
  93. puntuaciones[9] = (parseInt(j10.value)*1) + " = " + j.value.toUpperCase();
  94. puntuaciones[10] = (parseInt(k11.value)*1) + " = " + k.value.toUpperCase();
  95. puntuaciones[11] = (parseInt(l12.value)*1) + " = " + l.value.toUpperCase();
  96. puntuaciones[12] = (parseInt(m13.value)*1) + " = " + m.value.toUpperCase();
  97. puntuaciones[13] = (parseInt(n14.value)*1) + " = " + n.value.toUpperCase();
  98. puntuaciones[14] = (parseInt(o15.value)*1) + " = " + o.value.toUpperCase();
  99.  
  100.  
  101. var resultado = parseInt();
  102. var ganador = puntuaciones.sort(sortn());
  103. resultado = document.write(ganador);
  104. resultado;
  105.  
  106. }

Aclarar que intento capturar las puntuaciones ya obtenidas por otro sitio a traves de inputs en cajas de texto, ordenas las puntuaciones y luego mostrar las puntuaciones con sus respectivos jugadores.

Al ser sort, que separa los numeros por comas en una sola linea, tuve que adjuntar al array los nombres tambien, y creo que ese es el problema. Vereis que a la desesperada intente que el sort me interpretara solo nos numeros y puse multiplicaciones y parentesis para ver si le podia dar prioridad pero no funciona

Aunque cuando lo pruebo con ciertos numeros, sin rellenar las casillas de los nombres solo numeros, me los ordena mal. Por ejemplo con el 50 el 7 y el 70 me los ordena 50,7,70 :S

Gracias por vuestro tiempo y un saludo
  #11 (permalink)  
Antiguo 13/04/2015, 08:31
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 8 meses
Puntos: 578
Respuesta: Atasco con codigo de sorteo

Me parece que estás haciendo mal el sort. Si quieres que el ordenamiento sea numérico y no literal como te ocurre, bastaría con utilizar:

Código Javascript:
Ver original
  1. array.sort(function(a,b){
  2.    return a - b; // o b - a para descendiente
  3. });

Etiquetas: aprendizaje, funcion, html, input, js, sorteo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:43.