Foros del Web » Programando para Internet » Javascript »

Problema al pasar varios parámetros a una funciona

Estas en el tema de Problema al pasar varios parámetros a una funciona en el foro de Javascript en Foros del Web. Buenas noches ! Me estoy peleando con la api de google maps v3 y obtengo la latitud y la longitud Una parte la obtengo de ...
  #1 (permalink)  
Antiguo 17/01/2015, 13:52
 
Fecha de Ingreso: noviembre-2010
Mensajes: 156
Antigüedad: 13 años, 4 meses
Puntos: 0
Problema al pasar varios parámetros a una funciona

Buenas noches ! Me estoy peleando con la api de google maps v3 y obtengo la latitud y la longitud

Una parte la obtengo de la siguiente manera

Código Javascript:
Ver original
  1. function showPosition(position) {
  2.     x.innerHTML = "<div id='lat1'>Latitude:</div> " + position.coords.latitude +
  3.     "<div id='long1'><br>Longitude:</div> " + position.coords.longitude;   
  4. }

Y esto me lo hace correctamente luego tengo un foreach con PHP que me carga correctamente las latitutes y las longitudes de otros sitios.

Código PHP:
Ver original
  1. @foreach ($municipios as $user)
  2.     <p>{{ $user->municipio }}</p>
  3.         <p><div id="lat2">Latitud:{{ $user->latitud }}</div></p>
  4.     <p><div id="long2">Longitud:{{ $user->longitud }}</div></p>
  5.     <a onclick="calculardospuntos(this)">Calcular distancia entre dos puntos</a>
  6. @endforeach

El problema está en que quiero pasar los cuatro resultados a la función calculardospuntos() y mostrar en un mensaje de alerta su valor y yo a partir de ahi seguir investigando.

He probado con el getElementById pero me da un resultado de null

Código Javascript:
Ver original
  1. function calculardospuntos(id){
  2.   var lat1=document.getElementById(id);
  3.   var long1=document.getElementById("long1");
  4.   var lat2=document.getElementById("lat2");
  5.   var long2=document.getElementById("long2");
  6.   alert(lat1);
  7.   alert(long1);
  8.   alert(lat2);
  9.   alert(long2);
  10.  
  11. }
  #2 (permalink)  
Antiguo 17/01/2015, 14:45
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: Problema al pasar varios paámetros a una funciona

Lo estás haciendo mal. Para empezar, en ese foreach, estás generando elementos <div> con el mismo id en cada iteración; ten en cuenta que el id es un valor único e irrepetible. Por otro lado, si te fijas bien, a la función le estás pasando el enlace como elemento, no le estás pasando ningún id que es con lo que intentas obtener el valor para lat1, además, si deseas obtener el contenido de cada <div>, debes de tomarlo con la propiedad innerHTML.

En lugar de usar elementos <div> que son de bloque, usas elementos <label> o <span>, que son de línea, agrupa cada bloque de elementos en un <div> y para que no te hagas líos al momento de tomar los valores de dichos <span> o <label> (lo que elijas), accede al elemento padre del enlace con la propiedad parentNode, asigna a los y luego busca dentro de él a los <span> o <label>, clases para identificarlos (las clases sí pueden repetirse) y buscas a dichos elementos dentro del elemento padre (que en este caso sería el <div> a partir de dichas clases, pudiendo hacerlo con mayor facilidad utilizando el método querySelector.

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
  #3 (permalink)  
Antiguo 20/01/2015, 17:05
 
Fecha de Ingreso: noviembre-2010
Mensajes: 156
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Problema al pasar varios paámetros a una funciona

Buenas noches , estoy probando lo que me dices del foreach de cambiar los div por label y cuando ejecuto la consola siempre me sale el primer foreach.

Código PHP:
Ver original
  1. @foreach ($municipios as $user)
  2.     <p>{{ $user->municipio }}</p>
  3.         <p><label><div id="lat2" name="lat2">Latitud:{{ $user->latitud }}</div></label></p>
  4.     <p><label><div id="long2" name="long2">Longitud:{{ $user->longitud }}</div></label></p>
  5.     <a onclick="calculardospuntos()">Calcular distancia entre dos puntos</a>
  6. @endforeach

Y esta la función javascript que recibe el contenido

Código Javascript:
Ver original
  1. function calculardospuntos(){
  2. var father = document.getElementById('lat2');
  3. var esperar = document.getElementById('long2');
  4.  
  5. var children = father.childNodes;
  6. var esperar = esperar.childNodes;
  7. console.log(children);
  8. console.log(esperar);
  9. }

El problema viene que cuándo hago click me obtiene sólo los datos del primer municipio intentando hacer lo que tu me has dicho.
  #4 (permalink)  
Antiguo 20/01/2015, 17:45
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: Problema al pasar varios paámetros a una funciona

Sigues cometiendo el error de asignar el mismo id a más de un elemento, además, te sugerí que los datos vayan en elementos <label>, no que colocaras a los <div> dentro de ellos. Te vuelvo a decir que dicho dato debe de ser único en el documento. Mejor utiliza clases y accede a dichos elementos como te expliqué, es decir, tomando al elemento que contiene al enlace y luego buscas en él a los <label>.

Te lo voy a explicar con un sencillo ejemplo:

Código HTML:
Ver original
  1. <div>
  2.     <label class = "nombre">Juan</label>
  3.     <label class = "apellido">Pérez</label>
  4.     <button onclick = "datos(this)">Mostrar datos</button>
  5. </div>
  6.  
  7. <div>
  8.     <label class = "nombre">Vanessa</label>
  9.     <label class = "apellido">García</label>
  10.     <button onclick = "datos(this)">Mostrar datos</button>
  11. </div>

Código Javascript:
Ver original
  1. function datos(boton){
  2.     var padre = boton.parentNode,
  3.         nombre = padre.querySelector(".nombre").innerText,
  4.         apellido = padre.querySelector(".apellido").innerText;
  5.  
  6.     alert("Nombre completo: " + nombre + " " + apellido);
  7. }

Cuando pulse cualquiera de los botones contenidos en los <div>, ejecuto una función en la cual recibo al botón, busco al elemento que lo contiene y dentro de este, busco mediante las clases que asigné a los <label> que contienen los datos para finalmente mostrarlos en un mensaje de alerta.

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 24/01/2015, 12:45
 
Fecha de Ingreso: noviembre-2010
Mensajes: 156
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Problema al pasar varios paámetros a una funciona

Buenas tardes ! He conseguido obtener los cuatro valores que tengo en el momento

Código Javascript:
Ver original
  1. function datos(boton){
  2.     var padre = boton.parentNode;
  3.     var lat2 = padre.querySelector(".lat2").innerText;
  4.     var long2 = padre.querySelector(".long2").innerText;
  5.     var lat1 = document.getElementById("lat1").innerText;
  6.     var long1 = document.getElementById("long1").innerText;
  7.     alert(lat1+long1+lat2+long2);
  8. }

Ahora mi cuestión está en si puedo utilizar estos valores con la api de google maps para poder tazar la ruta posteriormente , al estar fuera de la función necesitaria saber cómo llamar a los datos.

Código Javascript:
Ver original
  1. var origen = new google.maps.LatLng(41.6938443, 2.3538418);
  2. var destino = new google.maps.LatLng(41.683199, 2.2859957);
  #6 (permalink)  
Antiguo 24/01/2015, 13:07
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: Problema al pasar varios paámetros a una funciona

Eso es algo que sabrás cuando pruebes reemplazando esos valores por las variables. No hay de otra.

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 26/01/2015, 15:48
 
Fecha de Ingreso: noviembre-2010
Mensajes: 156
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Problema al pasar varios paámetros a una funciona

Vale , lo he conseguido :) ! He entendido cómo funciona el paso de parámetros y todo eso que es lo que realmente me preocupaba gracias a tu ejemplo anterior.

No se si seguir con el tema aquí así que voy a poner la duda igual ya que mas o menos sigue siendo lo mismo y si no cerramos el tema y lo abro en php

Ahora consigo crear la ruta (punto A,B) , me muestra el trazado en gps y el tiempo que va a tardar.

Mi pregunta ahora consiste en lo siguiente.

Tengo los datos que me interesan guardados en la base de datos (destino, latitud y longitud) y me gustaría que los destinos se mostraran ordenados por la cercanía)

Los puedo devolver con un JSON

Código Javascript:
Ver original
  1. [{"provincia_id":1,"municipio":"Alegr\u00eda-Dulantzi","id":1,"latitud":42.841492,"longitud":-2.5135074},{"provincia_id":1,"municipio":"Amurrio","id":2,"latitud":43.0526489,"longitud":-3.0010217},{"provincia_id":1,"municipio":"A\u00f1ana","id":3,"latitud":42.802352,"longitud":-2.982607},

Vale , pues si la ruta que realizo tiene estos lugares cercas me gustaría que apareciesen , alguna ayuda al respecto ?

Última edición por jc1992; 26/01/2015 a las 16:29

Etiquetas: html, php, 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 11:41.