Foros del Web » Programando para Internet » Javascript »

Checkboxes

Estas en el tema de Checkboxes en el foro de Javascript en Foros del Web. Hola a todos! Escribo porque llevo muuucho muuucho tiempo muy mosqueda con un problema de checkboxes y no hay manera humana de resolverlo. Tengo una ...
  #1 (permalink)  
Antiguo 03/02/2008, 12:08
 
Fecha de Ingreso: julio-2007
Mensajes: 7
Antigüedad: 17 años, 6 meses
Puntos: 0
Checkboxes

Hola a todos!
Escribo porque llevo muuucho muuucho tiempo muy mosqueda con un problema de checkboxes y no hay manera humana de resolverlo.

Tengo una aplicacion Web en la que salen imágenes y bajo éstas, un checkbox. Si la imagen está metida en un carrito de la compra, cuando aparezca en pantalla debe aparecer seleccionado su checkbox correspondiente.
Uso páginas JSP con javascript y ajax.
El código es:
Código:
i=0;
j=0;
idCheckBox = "checkBox0";
idCheck = "check0";		
while (i < data.listSize){
   cart.existsItem(listName[i+1],listId[i+1],callBackHandler4);
   if(exists){	
      alert("es true");		
      document.getElementById(idCheckBox).innerHTML = '<input Type="checkbox" id="' + idCheck + '" onClick="selectCh('+i+')" checked/>';
   }
   else{
      alert("es false");
      document.getElementById(idCheckBox).innerHTML = '<input Type="checkbox" id="' + idCheck + '" onClick="selectCh('+i+')"/>';
   }
   i++;
   idCheckBox = "checkBox" + i;
   idCheck = "check" + i;
}
cart.existsItem(...) es una función en Ajax que me devuelve 1 o 0 (=está presente en el carrito o no)
1)Si dejo el código tal cual está todo funciona bien, pero claro, el usuario ve continuamente "es true" o "es false", con lo cual eso tiene que desaparecer...además de salirme el "null" que explico en 3).
2)Si quito los alert de "es true" o "es false" nunca me selecciona nada
3)Si comparo con el elemento que debería (en cart.existsItem uso i+1), que debería ser i, detecta los elementos desplazados 1 posición hacia la derecha y por tanto los selecciona tb desplazados hacia la derecha. Por eso he metido el "i+1", pero claro!, al llegar al final, como no existe el último elemento me saca un null por pantalla...

Alguien me puede por favor ayudar a solucionar esto??Llevo meses con el tema y no hay manera, ya no se si pensar que javascript anda cojo de algún sitio o que...

Muchas gracias!
Cristina.
  #2 (permalink)  
Antiguo 03/02/2008, 12:45
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 21 años, 2 meses
Puntos: 45
Re: Checkboxes

Hola Cristina:

AJAX crea respuestas asíncronas para la petición que tú le mandes hacer. No puedes colocar una sentencia AJAX para hallar un valor de true/false y después crear un condicional dependiendo de lo que se haya hallado (creo que eso es lo que has hecho con exists) directamente debajo de la llamada AJAX, ya que la sentencia se ejecutará antes de conocer el valor de exists.

Lo que quiero decir es que si vas a jugar con una variable exists que se tiene que determinar mediante un proceso AJAX, ese valor tardará cierto tiempo en llegar. En tu caso el condicional se ejecuta antes de saber si exists es true o false, por eso es por lo que creo que nunca te selecciona nada.

La solución pasaría por crear ese condicional dentro de la función que maneja el evento onreadystatechange. No sé si te baila entonces el concepto de AJAX.


Para tu cuestión 3 debes definirte más. Quieres comparar cada elemento con el siguiente, ¿con qué finalidad? ¿Qué quieres hacer con el último elemento? ¿con quién lo quieres comparar? Está claro entonces que ese i+1 debe sustituirse por otra cosa que funcione (probablemente debamos hallar el valor de i+1 bajo un condicional tipo if(i+1 < data.listSize) o algo por el estilo).


Saludos.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #3 (permalink)  
Antiguo 11/02/2008, 16:11
 
Fecha de Ingreso: julio-2007
Mensajes: 7
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: Checkboxes

Hola Derkenuke,

perdona por no contestar antes, muchas gracias!, no se como se me ha pasado esto, tanto tiempo mirando el mismo código y no pensar en lo principal de AJAX (asíncrono)...en fin, muchas gracias!!

Cristina.
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 02:10.