Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Array en un if coge valor vacio aunque no cumpla la condicion del if

Estas en el tema de Array en un if coge valor vacio aunque no cumpla la condicion del if en el foro de Javascript en Foros del Web. Muy buenas a tod@s, me esta ocurriendo lo que describo en el titulo. Pretendo comprobar que ckeckbox han sido seleccionados, para despues pasar su Id ...
  #1 (permalink)  
Antiguo 20/04/2018, 08:05
 
Fecha de Ingreso: octubre-2013
Mensajes: 79
Antigüedad: 10 años, 6 meses
Puntos: 1
Array en un if coge valor vacio aunque no cumpla la condicion del if

Muy buenas a tod@s,


me esta ocurriendo lo que describo en el titulo. Pretendo comprobar que ckeckbox han sido seleccionados, para despues pasar su Id que esta en le atributo value, por AJAX al servidor y despues borrar esos campos de la base de datos segun su Id.
Todo va bien, se determina cuales han sido seleccionados, pero el problema esta cuando en un condicionante quiero ver si ese checkbox ha sido seleccionado entonces recoja el value en un array. El problema es que si el checkbox no ha sido seleccionado en la condición el array guarda una variable vacia, cuando no debería porque no cumple la condición (he comprobado con un alert dentro del if que cuando no se cumple la condición no entra dentro del if, pero el array si que guarda un espacio en memoria).
Se sabe que ocurre esto, porque le pongo un alert(Id) y me devuelve (,,12) que en este caso es si hay tres checkbox, y selecciono el ultimo me devuelve el Id del checkbox seleccionado, pero los espacios en blanco me estan dando problemas en el lado servidor, porque no me borra ese Id especifico.
Tengo la solución en le lado del servidor para solucionarlo. Pero no me parece que eso sea lo correcto, la solución debería estar en el lado cliente.
Ademas que es un proyecto final de ciclo, y debo ajustarlo a lo correcto.

Agradeceria mucho ideas para solucionarlo desde el JS.

Adjunto codigo:


function confirmacion(){

var form=document.getElementById("formBorrado").length

var chek=document.getElementById("formBorrado").checkb ox

var checkbox = document.getElementsByName('caja');
var long=checkbox.length

var Id=new Array();

if (confirm('¿Estas seguro que deseas eliminar?')){

for(i=0;i<long;i++){

//AQUI ES DONDE SE PRODUCE EL PROBLEMA QUE EL ARRAY GUARDA UN ESPACIO EN LA MEMORIA AUNQUE NO CUMPLA LA CONDICION DEL IF

var isChecked = document.getElementById('caja'+[i])
if(isChecked.checked===true){
}
}

alert(Id)
var IdTotales= Id.toString();
var datos= "caja="+IdTotales
var xhr = nuevoAjax();
var url = "BorradoFront";
xhr.open("POST",url, true );
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");

xhr.send(datos);
}
else{
alert("No ha seleccionado alguna de las casillas para poder borrar")
return false;
}

}


P.D. siento no haber puesto el codigo formateado, hace mucho que no publicaba aqui y no me acordaba que tenia que formatearlo al publicar el mensaje, me temo que editandolo ya no me permite formatearlo.

Gracias de antemano por la ayuda!

Saludos

Última edición por sentoki79; 20/04/2018 a las 08:15
  #2 (permalink)  
Antiguo 20/04/2018, 10:35
 
Fecha de Ingreso: octubre-2013
Mensajes: 79
Antigüedad: 10 años, 6 meses
Puntos: 1
Respuesta: Array en un if coge valor vacio aunque no cumpla la condicion del if

Bueno dentro de la condicion if borre sin querer justo el array donde esta dando problemas.
Pongo todo junto el condicionante que da problemas:

if(isChecked.checked===true){
Id[i]=document.getElementById('caja'+[i]).value;
}



Gracias
  #3 (permalink)  
Antiguo 20/04/2018, 10:46
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Array en un if coge valor vacio aunque no cumpla la condicion del if

Me parece que no copiaste tal cual el código porque, en la condición, no insertas el valor del checkbox en el arreglo.

En teoría, una lógica como esta debería ser suficiente:

Código Javascript:
Ver original
  1. var data = [],
  2.     xhr= new nuevoAjax();
  3.  
  4. [].forEach.call(document.querySelectorAll("[name=caja]"), function(checkbox){
  5.     checkbox.checked && data.push(checkbox.name + "=" + checkbox.value);
  6. });
  7.  
  8. xhr.open("POST", ruta);
  9. xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  10. xhr.send(data.join("&"));
  11. xhr.addEventListener("load", function(){
  12.     this.status == 200 && console.log(this.responseText);
  13. }, false);

Se recorre al conjunto de checkbox y se añade al arreglo el par "nombre=valor" de cada checkbox marcado. Finalmente, se envía la información mediante una petición asíncrona (AJAX) y se visualiza la respuesta del servidor en la consola del navegador.

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #4 (permalink)  
Antiguo 20/04/2018, 10:58
 
Fecha de Ingreso: octubre-2013
Mensajes: 79
Antigüedad: 10 años, 6 meses
Puntos: 1
Respuesta: Array en un if coge valor vacio aunque no cumpla la condicion del if

Cita:
Bueno dentro de la condicion if borre sin querer justo el array donde esta dando problemas.
Adjunto esa linea que falta:

Id[i]=document.getElementById('caja'+[i]).value;



Gracias
Bueno lo he conseguido solucionar con un metodo que filtra el array.
Me ha quedado asi el metodo con funcion incluida:
Código:
function sinEspacios(elemento) {
    return elemento != null;
}
var filtrado = Id.filter(sinEspacios);
alert(filtrado)

Y muchas gracias por la respuesta, probaré tambien con tu codigo.

Saludos!
  #5 (permalink)  
Antiguo 20/04/2018, 11:20
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Array en un if coge valor vacio aunque no cumpla la condicion del if

No había cargado tu segunda respuesta mientras elaboraba la mía. De cualquier manera, es bueno saber que lograste solucionar el problema. Igual, siempre ten presente que, la validación más importante, se debe realizar en el lado del servidor, como indicaste que lo vienes haciendo.

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: ajax, aunque, vacio, valor
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 10:06.