Ver Mensaje Individual
  #2 (permalink)  
Antiguo 29/06/2018, 08:57
Avatar de ArturoGallegos
ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 2 meses
Puntos: 1146
Respuesta: Realizar una accion segun los checkbox marcados

tu error es creer que por cada checkbox requieres un if, por eso te duplica datos... tienes que juntar todo en un solo IF

Código Javascript:
Ver original
  1. var chk_deportes = document.suscripcion.deportes.checked;
  2.         var chk_noticias = document.suscripcion.noticias.checked;
  3.         var chk_economia = document.suscripcion.economia.checked;
  4.  
  5.          for(i=0;i<datos.length;i++){
  6.        
  7.         deportes = datos[i][0].indexOf(txtDeportes)>=0
  8.         noticias = datos[i][1].indexOf(txtNoticias)>=0
  9.         economia = datos[i][2].indexOf(txtEconomia)>=0
  10.        
  11.              if ((chk_deportes && deportes) || (chk_noticias && noticias) || (chk_economia && economia)) {
  12.                 encontrados.push(datos[i]);            
  13.              }
  14.            
  15.         }


como comentario:

no veo la finalidad de usar esto

deportes = datos[i][0].indexOf(txtDeportes)>=0
noticias = datos[i][1].indexOf(txtNoticias)>=0
economia = datos[i][2].indexOf(txtEconomia)>=0

al usar un array de arrays con ese codigo das por entendido que conoces la estructura y por ejemplo la posición 0 siempre tendrá deportes
es mas fácil y rápido datos[i][0] == "deportes" o bien datos[i][0] != "NO"


algo mas util y dinámico es que en tu formulario tus input fueran un Array
<input type="checkbox" name="tag[]" value="deportes" />

y hacer uso de
https://developer.mozilla.org/es/doc...s/Array/filter

Última edición por ArturoGallegos; 29/06/2018 a las 09:16