Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] funciones en javascript que no funciona correctamente

Estas en el tema de funciones en javascript que no funciona correctamente en el foro de Javascript en Foros del Web. Hola que tal, bueno la verdad es que no se nada de javascript y lo que quiero hacer es que estén varios checkbox y cuando ...
  #1 (permalink)  
Antiguo 24/01/2013, 17:49
 
Fecha de Ingreso: agosto-2009
Mensajes: 292
Antigüedad: 15 años, 3 meses
Puntos: 5
funciones en javascript que no funciona correctamente

Hola que tal, bueno la verdad es que no se nada de javascript y lo que quiero hacer es que estén varios checkbox y cuando se marque uno, el que sea, se muestre un div oculto y se sume uno y si se marca otro se sume otro y así sucesivamente y buscando por internet encontré varios códigos y los adapte a mis necesidades.

El script funciona masomenos bien, porque si marco el primer checkbox se muestra el div oculto y se suma 1 y su marco otro suma 1, etc... si desmarco 1 se resta 1, pero si desmarco el primer checkbox aunque otros estén seleccionados se oculta el div.

Alguien sabe porque sucede esto?

Aquí el código completo:

Código HTML:
Ver original
  1. <!DOCTYPE HTML>
  2. <script type="text/javascript">
  3. function showContent() {
  4.     element = document.getElementById("content");
  5.     check = document.getElementById("check");
  6.     if(check.checked) {
  7.         element.style.display='block';
  8.     } else {
  9.         element.style.display='none';
  10.     }
  11. }
  12.  
  13. function countCheckboxes() {
  14.     var form = document.getElementById('multi-select');
  15.     var count = 0;
  16.     for(var n = 0; n < form.length; n++) {
  17.        if(form[n].name == 'selected[]' && form[n].checked) {
  18.            count++;
  19.        }
  20.    }
  21.    document.getElementById('count-selected').innerHTML = count;
  22. }
  23. </head>
  24.  
  25.  
  26. <form action="#" method="post" id="multi-select" >  
  27. <input type="checkbox" name="selected[]" id="check" value="1" onclick="countCheckboxes(); showContent()" />
  28. <input type="checkbox" name="selected[]" id="check" value="1" onclick="countCheckboxes(); showContent()" />
  29. <input type="checkbox" name="selected[]" id="check" value="1" onclick="countCheckboxes(); showContent()" />
  30. <input type="checkbox" name="selected[]" id="check" value="1" onclick="countCheckboxes(); showContent()" />
  31. <input type="checkbox" name="selected[]" id="check" value="1" onclick="countCheckboxes(); showContent()" />
  32. <input type="checkbox" name="selected[]" id="check" value="1" onclick="countCheckboxes(); showContent()" />
  33. </form>  
  34.  
  35.  
  36. <div id="content" style="display: none;">
  37. <a href="#" style="float: left;   padding: 0 10px; text-decoration: none;background: #55B05A;color: white;font-weight: bold;"><div id="count-selected">0 Selected</div>  </a>
  38. </div>
  39.  
  40. </body>
  41. </html>

Saludos y gracias de antemano
  #2 (permalink)  
Antiguo 24/01/2013, 18:24
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 4 meses
Puntos: 1567
Respuesta: funciones en javascript que no funciona correctamente

Primero, un error grave, los id de un elemento deben ser un valor único, en tu caso todos son "check"

Segundo, la solución está mal planteada porque no requiere de 2 funciones, mientras no sumes ningún valor. ¿cuál ha de ser el valor de count?, cero, verdad?
entonces en countCheckboxes(), habría que ubicar en alguna parte

Código Javascript:
Ver original
  1. if(count > 0){
  2.     document.getElementById("content").style.display = 'block';
  3.     }else{
  4.       document.getElementById("content").style.display = 'none';
  5.     }

El dónde ubicar ese fragmento, te lo dejo a vos.
Es decir, showContent() nos está sobrando.

Para no saber de javascript, un buen intento, pero esto requiere certezas. que solo pueden ser despejadas a través de la lectura de un buen manual, http://librosweb.es no sería un mal comienzo

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #3 (permalink)  
Antiguo 24/01/2013, 18:44
 
Fecha de Ingreso: agosto-2009
Mensajes: 292
Antigüedad: 15 años, 3 meses
Puntos: 5
Respuesta: funciones en javascript que no funciona correctamente

Cita:
Iniciado por emprear Ver Mensaje
Primero, un error grave, los id de un elemento deben ser un valor único, en tu caso todos son "check"

Segundo, la solución está mal planteada porque no requiere de 2 funciones, mientras no sumes ningún valor. ¿cuál ha de ser el valor de count?, cero, verdad?
entonces en countCheckboxes(), habría que ubicar en alguna parte

Código Javascript:
Ver original
  1. if(count > 0){
  2.     document.getElementById("content").style.display = 'block';
  3.     }else{
  4.       document.getElementById("content").style.display = 'none';
  5.     }

El dónde ubicar ese fragmento, te lo dejo a vos.
Es decir, showContent() nos está sobrando.

Para no saber de javascript, un buen intento, pero esto requiere certezas. que solo pueden ser despejadas a través de la lectura de un buen manual, http://librosweb.es no sería un mal comienzo

Saludos
Hola que tal, gracias por tu ayuda ya modificando el código me quedo así y funciona, pero no se si sea la mejor forma de hacerlo

Código HTML:
Ver original
  1. <!DOCTYPE HTML>
  2. <script type="text/javascript">
  3. function countCheckboxes() {  
  4.     element = document.getElementById("content");
  5.     var form = document.getElementById('multi-select');
  6.     var count = 0;
  7.     for(var n = 0; n < form.length; n++) {
  8.        if(form[n].name == 'selected[]' && form[n].checked) {
  9.            count++;
  10.        }  
  11.        if(count >= '1') {
  12.             element.style.display='block';
  13.         } else {
  14.             element.style.display='none';
  15.         }  
  16.     }
  17.     document.getElementById('count-selected').innerHTML = count;
  18. }
  19. </head>
  20.  
  21.  
  22. <form action="#" method="post" id="multi-select" >  
  23. <input type="checkbox" name="selected[]" value="1" onclick="countCheckboxes()" />
  24. <input type="checkbox" name="selected[]" value="1" onclick="countCheckboxes()" />
  25. <input type="checkbox" name="selected[]" value="1" onclick="countCheckboxes()" />
  26. <input type="checkbox" name="selected[]" value="1" onclick="countCheckboxes()" />
  27. <input type="checkbox" name="selected[]" value="1" onclick="countCheckboxes()" />
  28. <input type="checkbox" name="selected[]" value="1" onclick="countCheckboxes()" />
  29. </form>  
  30.  
  31.  
  32. <div id="content" style="display: none; float: left;   padding: 0 10px; text-decoration: none;background: #55B05A;color: white;font-weight: bold;">
  33. <div id="count-selected" style="float:left; margin-right:8px;">0</div><span> Selected</span>
  34. </div>
  35.  
  36. </body>
  37. </html>

Nuevamente muchas gracias

Saludos
  #4 (permalink)  
Antiguo 24/01/2013, 19:04
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 4 meses
Puntos: 1567
Respuesta: funciones en javascript que no funciona correctamente

Bueno, si te funciona, funciona, pero tecnicamente hablando, por que hacés esto
if(count >= '1')

Si sabés que count es un número, y si es mayor a 0 debe mostrar el div con el conteo, sencillamente haría

if(count > 0)


Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #5 (permalink)  
Antiguo 24/01/2013, 19:10
 
Fecha de Ingreso: agosto-2009
Mensajes: 292
Antigüedad: 15 años, 3 meses
Puntos: 5
Respuesta: funciones en javascript que no funciona correctamente

Cita:
Iniciado por emprear Ver Mensaje
Bueno, si te funciona, funciona, pero tecnicamente hablando, por que hacés esto
if(count >= '1')

Si sabés que count es un número, y si es mayor a 0 debe mostrar el div con el conteo, sencillamente haría

if(count > 0)


Saludos
Cierto corregido muchas gracias y una ultima pregunta la parte

Código Javascript:
Ver original
  1. if(count > 0) {
  2.         document.getElementById("content").style.display = 'block';
  3.     } else {
  4.         document.getElementById("content").style.display = 'none';
  5.     }

es lo mismo que este dentro o fuera del bucle for

Saludos
  #6 (permalink)  
Antiguo 24/01/2013, 19:28
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 4 meses
Puntos: 1567
Respuesta: funciones en javascript que no funciona correctamente

En este caso en particular, poniéndola dentro del for, pero fuera del if del for, no habría diferencias, incluso poniéndola dentro del for, y dentro del if, a continuación del count++, funcionaría también, aunque con una diferencia.
Pensá que este caso, a cada click de los checkboxes se recorren todos los elementos nuevamente y se ejecuta el incremento que es lo que en definitiva te pone el número en el div.
Bueno, pero creo que ya es cuestion de que experimentes y compares resultados. Te recomiendo que leas un poco del uso del console.log
http://blog.unijimpe.net/depurar-jav...o-console-log/

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #7 (permalink)  
Antiguo 24/01/2013, 19:36
 
Fecha de Ingreso: agosto-2009
Mensajes: 292
Antigüedad: 15 años, 3 meses
Puntos: 5
Respuesta: funciones en javascript que no funciona correctamente

Cita:
Iniciado por emprear Ver Mensaje
En este caso en particular, poniéndola dentro del for, pero fuera del if del for, no habría diferencias, incluso poniéndola dentro del for, y dentro del if, a continuación del count++, funcionaría también, aunque con una diferencia.
Pensá que este caso, a cada click de los checkboxes se recorren todos los elementos nuevamente y se ejecuta el incremento que es lo que en definitiva te pone el número en el div.
Bueno, pero creo que ya es cuestion de que experimentes y compares resultados. Te recomiendo que leas un poco del uso del console.log
http://blog.unijimpe.net/depurar-jav...o-console-log/

Saludos
Muchas gracias

Saludos

Etiquetas: correctamente, funcion, funciones, html, input
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 12:29.