Empezaré diciendo que mi nivel de javascript es bastante básico y tengo el siguiente problema, he hecho un array y un formulario con distintos elementos y necesito hacer
búsquedas en el array según los elementos del formulario que tenga rellenados y/o seleccionados, para ello tengo una función donde recorro el formulario y meto en una variable los id de los elementos que tienen datos o están marcados y estos id luego los paso a otra función donde realizo la búsqueda según los valores recibidos, pues no me funciona la búsqueda y no se por qué
Este es el formulario
Código HTML:
Esta es la función con la que extraigo los id de los distintos elementosVer original
Código Javascript:
Y esta es la función con la que realizo las búsquedasVer original
var datos = new Array(); datos =[["Jose","Naranjo","Madrid","libros","peliculas","NO"], ["Jose","Perez","Sevilla","libros","NO","deportes"], ["Antonio","Garcia","Toledo","NO","peliculas","NO"], ["Antonio","Moreno","Toledo","libros","peliculas","deportes"]]; function elementosForm() { var mostrarId = ""; var los_elementos = document.getElementById('formu1').elements; for (i=0; i<los_elementos.length; i++) { if(los_elementos[i].value == ''){ mostrarId += ''; }else{ if((los_elementos[i].type == 'radio')||(los_elementos[i].type == 'checkbox')){ if(los_elementos[i].checked == true){ mostrarId += los_elementos[i].id +' && '; }else{ mostrarId += ''; } }else{ mostrarId += los_elementos[i].id +' && '; } } } alert(mostrarId.slice(0,-4)); return mostrarId.slice(0,-4) }
Código Javascript:
Lo que quiero es que si tengo escrito el nombre sólo, la primera función me pase a la variable datosBusqueda el id: nombre y con este id buscar en el array, en el índice[0] y me muestre las coincidencias, si escribo el nombre y el apellido me pase el valor con los id: nombre && apellido y en este caso me busque en el índice [0] y en el [1] y así sucesivamente con todos los botones, si los datosBusqueda los escribo yo, funciona bien pero si esos datos vienen de la primera función ya no funciona y no se que estoy haciendo mal, tampoco se si realizar las búsquedas utilizando estas funciones es la forma más correcta de hacerlo Ver original
function busqueda(){ var txtNombre = document.getElementById("nombre").value; var txtApellido = document.getElementById("apellido").value; var ciudades = document.getElementById("ciudad"); var buscarCiudad = ciudades.options[ciudades.selectedIndex].value; var buscarLibros = document.getElementById("libros").value; var buscarPelis = document.getElementById("peliculas").value; var buscarDeportes = document.getElementById("deportes").value; var n = datos.length; buscarNombre = []; for (var j = 0; j < n; j++) { var nombre = datos[j][0].toLowerCase().indexOf(txtNombre)>=0; var apellido = datos[j][1].toLowerCase().indexOf(txtApellido)>=0; var ciudad = datos[j][2].toLowerCase().indexOf(buscarCiudad) >=0; var libros = datos[j][3].toLowerCase().indexOf(buscarLibros)>=0; var pelis = datos[j][4].toLowerCase().indexOf(buscarPelis)>=0; var deportes = datos[j][5].toLowerCase().indexOf(buscarDeportes)>=0; var datosBusqueda = elementosForm(); //var datosBusqueda = nombre && apellido && ciudad && libros && pelis && deportes //si lo pongo de esta manera funciona bien, pero si uso la función no if (datosBusqueda){ buscarNombre.push(datos[j]); } } alert(buscarNombre) }