Foros del Web » Programando para Internet » Jquery »

[SOLUCIONADO] Enlace de array y su This

Estas en el tema de Enlace de array y su This en el foro de Jquery en Foros del Web. Hola, bueno ya que el título es un poco confuso voy a intentar explicarme lo mejor posible. Tengo varios arrays : @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Javascript ...
  #1 (permalink)  
Antiguo 13/02/2015, 12:24
Avatar de Flow89  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 14 años
Puntos: 1
Enlace de array y su This

Hola, bueno ya que el título es un poco confuso voy a intentar explicarme lo mejor posible.

Tengo varios arrays :
Código Javascript:
Ver original
  1. establecimiento[0] = new Array() ;
  2.         establecimiento[0][0] = ["La Parrilla de San Lorenzo"];
  3.         establecimiento[0][1] = ["8"];
  4.  
  5.     establecimiento[1] = new Array();
  6.         establecimiento[1][0] = ["La Viña de Patxi"];
  7.         establecimiento[1][1] = ["7"];

Y un bucle, con el que hago un listado con los datos de los diferentes arrays:
Código Javascript:
Ver original
  1. for (i=0;i<=establecimiento.length-1;i++){     
  2.         $("#listado").html($("#listado").html() +  establecimiento[i][0] + " " + establecimiento[i][1] + "<br>");
  3. });

Lo que quiero conseguir es que cada uno de los listados que me muestra al hacer click en ellos, me lleve a otra página y a su vez recoja el valor establecimiento[i][0] (nombre del bar en realidad).

Ya que tengo que mostrar en otra página los datos del bar en el que me hayan clicado, que también están en otro array.
Código Javascript:
Ver original
  1. var prueba = "Vino Tinto";
  2.  
  3.     establecimiento[0] = new Array()
  4.         establecimiento[0][0] = ["La Parrilla de San Lorenzo"];
  5.         establecimiento[0][1] = ["psl_1.jpg"];
  6.         establecimiento[0][2] = ["valoracionP"];
  7.         establecimiento[0][3] = ["Pedro Niño nº1"];
  8.         establecimiento[0][4] = ["<dd>tarjeta de credito"];
  9.         establecimiento[0][5] = ["41.651419°"];
  10.         establecimiento[0][6] = ["-4.731411°"];
  11.         establecimiento[0][7] = ["comentarios"];
  12.         establecimiento[0][8] = ["galeria"];
  13.  
  14. for(i=0; i <= establecimiento.length-1; i++) {
  15.         // si aparece el resultado nos da 0, sino -1
  16.         // cuando encuentre el array en que aparece y da 0, muestra ese array
  17.         var aparece = establecimiento[i][0].indexOf(prueba);
  18.             if(aparece == 0) {
  19.                 for(x=0; x <= establecimiento[i].length-1;i++){
  20.                     $("#nombre_establecimiento").html("<p>" + establecimiento[i][0] + "</p>");
  21.                     $("#foto_establecimiento").html("<img src=\"img/" + establecimiento[i][1] + "\" width=\"100%\" \">" );
  22.                     $("#valoracion_establecimiento").html("<p>" + establecimiento[i][2] + "</p>");
  23.                     $("#datos_establecimiento").html(establecimiento[i][3]);
  24.                     $("#servicios_establecimiento").html(establecimiento[i][4]);
  25.                     break;
  26.                 }
  27.             }
  28.     }

Y en realidad lo que quiero, es sustituir esa variable PRUEBA, por el nombre del enlace que me hayan clicado antes..

Tenia pensado hacer algo así como un onClick recogiendo el valor con un THIS, para pasarlo a la página siguiente pero no consigo hacerlo..

A ver si me podéis iluminar, GRACIAS!
__________________
Seamos realistas. Busquemos lo imposible. ;)
La forma de dar las gracias en este foro, es dando Karma, aunque a veces con un simple Gracias, basta.

Última edición por Flow89; 13/02/2015 a las 13:08
  #2 (permalink)  
Antiguo 13/02/2015, 21:01
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: Enlace de array y su This

Por cada registro que añadas, puedes añadir un contenedor, digamos, un <div>, le asignas el contenido, una clase y un pseudo-atributo que contendrá el valor que deseas enviar. Luego, cuando el usuario pulse uno de los elementos <div>, se ejecutará una función que previamente debes de asignar, pero como los elementos se añadirán luego de haber cargado la página, entonces debes de delegarla, apoyándote en la clase que asignaste a cada <div>.

Código Javascript:
Ver original
  1. for (var i = 0, l = establecimiento.length; i < l; i++){
  2.     $("#listado").append(
  3.         $("<div/>", {
  4.             html: establecimiento[i][0] + " " + establecimiento[i][1],
  5.             class: "contenido",
  6.             "data-valor": establecimiento[i][0]
  7.         })
  8.     );  
  9. }
  10.  
  11. $("#listado").on("click", ".contenido", function(){
  12.     $(location).prop("href", "tupagina.html?variable=" + $(this).data("valor"));
  13. });

Si deseas recibir el valor en 'tupagina.html' solo con JavaScript, hazlo así:

Código Javascript:
Ver original
  1. var url = document.URL,
  2.     valor = url.substr(url.indexOf("=") + 1); //Este es el valor recibido

Y si el archivo es PHP, entonces lo debes de recibir así: $_GET['variable'].

Saludos
__________________
«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

Última edición por Alexis88; 13/02/2015 a las 21:14 Razón: Recepción del valor
  #3 (permalink)  
Antiguo 14/02/2015, 13:25
Avatar de Flow89  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 14 años
Puntos: 1
Respuesta: Enlace de array y su This

Muchas Gracias Alexis, he acabado implementandolo así;

Código Javascript:
Ver original
  1. for (i=0;i<=establecimiento.length-1;i++){     
  2.         $("#listado").append(
  3.             $("<div/>", {
  4.                 html: establecimiento[i][0],
  5.                 id: "columna1_res",
  6.                 "data-valor": establecimiento[i][0]
  7.             })
  8.         );
  9.  
  10.         $("#listado").append(
  11.             $("<div/>", {
  12.                 html: establecimiento[i][1],
  13.                 id: "columna2_res"
  14.             })
  15.         );
  16.     }
  17.  
  18.     $("#listado").on("click", "#columna1_res", function(){
  19.         $(location).prop("href", "establecimiento.html?variable=" + $(this).data("valor"));
  20.     });
  21.  
  22.     });

y recogiendolo así:
Código Javascript:
Ver original
  1. var url = document.URL,
  2.     valor = url.substr(url.indexOf("=") + 1);
  3.    
  4.     var cadena = valor.replace(/%20/g," ");
  5.     restaurante = cadena.replace(/%C3%B1/g,"ñ");

Un saludo y gracias una vez más.
__________________
Seamos realistas. Busquemos lo imposible. ;)
La forma de dar las gracias en este foro, es dando Karma, aunque a veces con un simple Gracias, basta.
  #4 (permalink)  
Antiguo 14/02/2015, 13:39
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: Enlace de array y su This

Ten cuidado con asignar el mismo id a más de un elemento en el mismo documento, recuerda que debe de ser un valor único en todo el documento, por eso usé una clase que sí puede repetirse.

Saludos
__________________
«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
  #5 (permalink)  
Antiguo 14/02/2015, 14:09
Avatar de Flow89  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 14 años
Puntos: 1
Respuesta: Enlace de array y su This

Cita:
Iniciado por Alexis88 Ver Mensaje
Ten cuidado con asignar el mismo id a más de un elemento en el mismo documento, recuerda que debe de ser un valor único en todo el documento, por eso usé una clase que sí puede repetirse.

Saludos
@Alexis88

Aunque no tenía ningún problema llamándolo por ID, he decidido llamarlo por clase, por si acaso.

Me ha surgido otro problemilla, utilizando este mismo sistema para obtener que array de establecimiento mostrar.

Te pego el código y te comento el problema.

Recojo en una página lo que me viene de otra (en este caso el valor que recojo es "comida").
Código Javascript:
Ver original
  1. var url = document.URL,
  2.     valor = url.substr(url.indexOf("=") + 1); // Recogemos la variable
  3.    
  4.    
  5.        
  6.     var comida = new Array();
  7.     comida[0] = new Array() ;
  8.         comida[0][0] = ["La Parrilla de San Lorenzo"];
  9.         comida[0][1] = ["8"]
  10. ;

y lo muestro así
Código Javascript:
Ver original
  1. for (i=0;i<=valor.length-1;i++){
  2.         $("#listado").append(
  3.             $("<div/>", {
  4.                 html: valor[i][0],
  5.                 class: "columna1_res",
  6.                 "data-valor": valor[i][0]
  7.             })
  8.         );
  9.  
  10.         $("#listado").append(
  11.             $("<div/>", {
  12.                 html: valor[i][1],
  13.                 class: "columna2_res"
  14.             })
  15.         );
  16.     }
  17.  
  18.     $("#listado").on("click", ".columna1_res", function(){
  19.         $(location).prop("href", "establecimiento.html?variable=" + $(this).data("valor"));
  20.     });


Pero el html: valor[i][1] no me coje el array comida[i][1], si no que me lo interpreta como una cadena y me muestra la primera letra de esa cadena.

Seguro que es una bobada, pero no doy con ello.
Que puedo hacer? muchas gracias de antemano.
__________________
Seamos realistas. Busquemos lo imposible. ;)
La forma de dar las gracias en este foro, es dando Karma, aunque a veces con un simple Gracias, basta.
  #6 (permalink)  
Antiguo 14/02/2015, 14: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: Enlace de array y su This

Es que lo que envías es una cadena, no un array. Toma el valor de valor completo.

Saludos
__________________
«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
  #7 (permalink)  
Antiguo 14/02/2015, 14:34
Avatar de Flow89  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 14 años
Puntos: 1
Respuesta: Enlace de array y su This

Pero yo lo que quiero que me muestre es comida[i][0] y comida[i][1],
O si donde hubiese dado click es en desayuno el array desayuno[i][0].

Pero como el valor de donde ha clicado lo tengo en la variable valor por eso utilizo valor[i][0] y valor[i][1]

Es decir, en realidad tengo varios arrays, comidas desayunos cenas, y los tres tienen la estructura mencionada arriba, con los bares de cada categoria.
__________________
Seamos realistas. Busquemos lo imposible. ;)
La forma de dar las gracias en este foro, es dando Karma, aunque a veces con un simple Gracias, basta.
  #8 (permalink)  
Antiguo 14/02/2015, 15:19
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: Enlace de array y su This

Para el ejemplo que te mostré, creé un pseudo-atributo 'data-valor' para asignarle uno de los valores y luego enviarlo; si deseas enviar más valores, crea más pseudo-atributos y asigna los respectivos valores que luego enviarás como una query string, del tipo: tupagina.php?variable1=valor1&variable2=valor2, de esta manera, enviarás y recibirás todos los valores que desees.

Saludos
__________________
«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
  #9 (permalink)  
Antiguo 14/02/2015, 15:41
Avatar de Flow89  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 14 años
Puntos: 1
Respuesta: Enlace de array y su This

Creo que no me estas entendiendo.. yo lo que quiero es que coja de manera dinámica el valor de html:

Para lo cual utilizo html: valor[i][1], siento valor, el nombre del array a mostrar.

Este nombre le obtengo de la cadena recogida de otra página anterior de la misma manera es decir, leyendo el valor que me envia a traves de la barra de direcciones.

Lo obtengo de manera correcta, puesto que si pincho en desayuno, la variable valor vale desayuno.
Pero al ir a lanzarlo como valor[i], no me coge desayuno[i] como array, sino desayuno como cadena y [i] como posiciion en la cadena.

Espero que ahora me hayas entendido mejor, un saludo.
__________________
Seamos realistas. Busquemos lo imposible. ;)
La forma de dar las gracias en este foro, es dando Karma, aunque a veces con un simple Gracias, basta.
  #10 (permalink)  
Antiguo 14/02/2015, 16:06
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: Enlace de array y su This

Te acabo de explicar que estás recibiendo una cadena, no un array. No se pueden enviar y recibir arrays de esa manera, por lo que tienes dos opciones; o envías los valores del array mediante variables (que fue lo que te dije en una de las respuestas anteriores) o lo envías como un objeto JSON, pero JAMÁS vas a poder enviar ni recibir un array de manera directa mediante la URL.

Saludos
__________________
«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
  #11 (permalink)  
Antiguo 17/02/2015, 11:32
Avatar de Flow89  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 14 años
Puntos: 1
Respuesta: Enlace de array y su This

Ya entendí, buscaré otra manera de hacerlo, puesto que enviar todo el array por variables mediante la url no es viable.

Muchas gracias Alexis, un saludo.
__________________
Seamos realistas. Busquemos lo imposible. ;)
La forma de dar las gracias en este foro, es dando Karma, aunque a veces con un simple Gracias, basta.

Etiquetas: enlace
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 20:15.