Hola a tod@s
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:
Ver original<form name='formu1' id='formu1'> <label><input name="Peliculas" type="checkbox" id="peliculas" value="peliculas" />Películas
</label> <label><input name="Deportes" type="checkbox" id="deportes" value="deportes" />Deportes
</label><br /><br /> <input type="button" onclick="busqueda();" name="procesar" value="procesar"><br />
Esta es la función con la que extraigo los id de los distintos elementos
Código Javascript
:
Ver originalvar 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)
}
Y esta es la función con la que realizo las búsquedas
Código Javascript
:
Ver originalfunction 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)
}
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