CHuLoYo

| 762 envíos |  | Desconectado | 1706 lecturas 5 respuestas | | [SOLUCIONADO] Problemas con Javascript y Arrays | 21-12-2009 a las 00:24:18 |
A ver si alguien me puede e char un cable. En realidad , aunque el problema sea de Javascript, los arrays y los bucles son iguales en todos los lenguajes (o por lo menos similares). El caso, es que estoy haciendo en los mensajes privados la selección de mensajes para borrar. Todo ello lo hago con Javascript con este código (comentado): Funciona bien, pero si seleccionamos dos elementos (en orden, primero uno y luego el segundo), y deseleccionamos el primero de ellos, ya no reconoce al segundo. Sigue existiendo pero aunque lo deseleccionemos no se borra. ¿A alguien se le ocurre algo? www.Esquio.net | Diseño y programación web profesional Responder | Citar | Moderar | Mensaje Privado |
|
wilmaforez

| 65 envíos |  | Desconectado |
#1 |
¡Buenas! Creo que el problema está aqui:
No sé cómo gestiona los arrays javascript. Pero se me ocurren un par de cosas.
Que cuando haces lo que dices ( borrar un elemento que está delante de otro ), al recorrer ese bucle pase por un elemento que no existe, dé error y pare la ejecución.
También puede ser que el valor de "total.value" sea menor pero sigan habiendo la misma cantidad de elementos ( aunque uno de ellos esté vacío ), y por tanto no recorra todos los elementos.
Espero haberme acercado al menos :D. Saludos.
Responder | Citar | Moderar | Mensaje Privado |
CHuLoYo

| 762 envíos |  | Desconectado |
#2 |
Tu segunda respuesta es la correcta. No da error cuando un elemento está vacío gracias al IF. Con él controlo si existe o no.
Enhorabuena wilmaforez, a ver cómo lo arreglo. ¿Se te ocurre algo?
Edito:
Se me acaba de ocurrir una idea: a medida que se va seleccionando, se añade a una variable en vez de en un array, separados por comas por ejemplo:
variable="20,41,63";
Cuando se deseleccionen, se hace un split y se recorre todo mirando qué valor coincide, algo así:
variable2=variable.split; variable2[0]=20; variable2[1]=41; variable2[2]=63;
for(condiciones) { if(variable2[i]==id) { delete variable2[i]; } }
Y volveríamos a pintar todos. Pero he aquí el problema. ¿Cómo puedo saber cuántos elementos tiene un array?
Saludos. www.Esquio.net | Diseño y programación web profesional Responder | Citar | Moderar | Mensaje Privado |
wilmaforez

| 65 envíos |  | Desconectado |
#3 |
Buenas, Me alegro de haber acertado :D.
Mis ideas para arreglar en problema serían: Usar un arrays dinámico ( ni siquiera sé si esto es posible en javascript ); o correr los elementos del array cada vez que se elimina un elemento. Pero lo del split ese tiene buena pinta. Puedes guardar una variable con la cantidad de elementos que llevas guardados, igual que hacías antes ( creo ); y en este caso no tendrías el problema de el elemento vacío ya que el array se genera cada vez.
EDITO. He estado indagando respecto a la función split(). Y en realidad no necesitas guardar una variable extra. Sería algo así:
¡Saludos!
Responder | Citar | Moderar | Mensaje Privado |
CHuLoYo

| 762 envíos |  | Desconectado |
#4 |
variable.length ! Era lo que buscaba! Muchas gracias www.Esquio.net | Diseño y programación web profesional Responder | Citar | Moderar | Mensaje Privado |
CHuLoYo

| 762 envíos |  | Desconectado |
#5 |
Wow! El código ha quedado niquelado, de miedo! Aquí lo comparto con vosotros (he de decir que me han ayudado):
www.Esquio.net | Diseño y programación web profesional Responder | Citar | Moderar | Mensaje Privado |