Foros del Web » Programando para Internet » Javascript »

Llamar a subfuncion desde fuera de la funcion principal

Estas en el tema de Llamar a subfuncion desde fuera de la funcion principal en el foro de Javascript en Foros del Web. Hay alguna forma de llamar a una funcion que se encuentra dentro de otra?? me explico lo que quiero es esto: function uno() { function ...
  #1 (permalink)  
Antiguo 12/05/2011, 14:51
 
Fecha de Ingreso: abril-2011
Mensajes: 5
Antigüedad: 13 años
Puntos: 0
Llamar a subfuncion desde fuera de la funcion principal

Hay alguna forma de llamar a una funcion que se encuentra dentro de otra?? me explico lo que quiero es esto:

function uno() {
function dos() {
}
}
</script>


<input type="button" onclick="dos()" value="" />

lo que pretendo es llamar a la funcion dos que se ecuentra dentro de la funcion uno desde un boton, tengo entendido que no se puede hacer de esta forma... pero hay alguna otra forma de lograr esto?
  #2 (permalink)  
Antiguo 12/05/2011, 15:05
Avatar de Aijoona
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Buenos Aires
Mensajes: 779
Antigüedad: 12 años, 11 meses
Puntos: 343
Respuesta: Llamar a subfuncion desde fuera de la funcion principal

En ese caso la funcion dos pertenece al contexto local de la funcion uno, por lo cual es imposible accederla desde afuera, a menos que la expongas explicitamente.

De cualquier manera deberías ejecutar primero la funcion uno, para que la otra exista.

La pregunta es, por qué harías algo así?
__________________
blog | @aijoona
  #3 (permalink)  
Antiguo 12/05/2011, 15:28
 
Fecha de Ingreso: abril-2011
Mensajes: 5
Antigüedad: 13 años
Puntos: 0
Respuesta: Llamar a subfuncion desde fuera de la funcion principal

Estoy haciendo un programa para seguir a mi auto en google maps a traves de un gps.
la funcion iniatialize se carga con <body onload =initialize()>. Es la que carga el mapa. La funcion punto se encarga de leer un archivo txt con las coordenadas y va mostrando en el mapa el punto. Por lo tanto hice un setInterval para iterar la lectura de este archivo (que se va actualizando a todo esto).
Solamente quiero iterar la funcion punto que es la que va mostrando el punto, si itero la funcion initialize se ve muy feo ya que se carga tambien todo el mapa de nuevo. Y despues llamo a la funcion punto con un boton. Espero haberme explicado bien... aqui dejo esta parte del codigo.
PD. me funciona todo bien en el caso de iterar la funcion initialize, pero como mencione solo quiero ir actualizando la ubicacion del auto una vez el mapa cargado.


var intervalID;

function initialize() {
var map = new GMap2(document.getElementById("map_canvas"));
map.setCenter(new GLatLng(-33.408319444444400,-70.573786111111100),15);
map.addControl(new GLargeMapControl());
map.addControl(new GOverviewMapControl());

function punto() {


// A function to create the marker and set up the event window

function createMarker(point,name,html) {
var marker = new GMarker(point);
GEvent.addListener(marker, "click", function() {
marker.openInfoWindowHtml(html);
});
return marker;
}

// === Define the function thats going to process the text file ===
process_it = function(doc) {
// === split the document into lines ===
lines = doc.split("\n");
for (var i=0; i<lines.length; i++) {
if (lines[i].length > 1) {
// === split each line into parts separated by "|" and use the contents ===
parts = lines[i].split("|");
var lat = parseFloat(parts[0]);
var lng = parseFloat(parts[1]);
var html = parts[2];
var label = parts[3];
var point = new GLatLng(lat,lng);
// create the marker
var marker = createMarker(point,label,html);
map.addOverlay(marker);
map.panTo(new GLatLng(lat, lng));
}
}

}


GDownloadUrl("example.txt", process_it);
}
}


function iterar(){
intervalID=setInterval("punto()",3000);
}
function detenerpunto(){
clearInterval(intervalID);
}

......
<body onload="initialize()" onunload="GUnload()">

.....

<td width="101"><input type="button" onclick="iterar()" value="Posicion Actual" /></td>
<td width="136"><input type="button" onclick="detenerpunto()" value="Detener Seguimiento" /></td>
  #4 (permalink)  
Antiguo 12/05/2011, 15:37
Avatar de Aijoona
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Buenos Aires
Mensajes: 779
Antigüedad: 12 años, 11 meses
Puntos: 343
Respuesta: Llamar a subfuncion desde fuera de la funcion principal

Usa el highlight para postear el codigo formateado.
__________________
blog | @aijoona
  #5 (permalink)  
Antiguo 12/05/2011, 15:47
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Llamar a subfuncion desde fuera de la funcion principal

buenas,
tendrias que asignar esa funcion desde la funcion initialize al boton deseado. es decir, desde el evento onload (initialize) accedes al boton (input) y le registras el evento onclick con la funcion (punto). tienes que hacerlo desde ahi porque es ahi el contexto en que esta definido la funcion.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #6 (permalink)  
Antiguo 12/05/2011, 16:19
 
Fecha de Ingreso: abril-2011
Mensajes: 5
Antigüedad: 13 años
Puntos: 0
Respuesta: Llamar a subfuncion desde fuera de la funcion principal

Disculpa...no llevo mucho en esto y creo que quede un poco confundido,
no entiendo muy bien.... como se podria hacer para llamar la funcion punto y registrar el evento on click desde el evento onload?
  #7 (permalink)  
Antiguo 12/05/2011, 16:34
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Llamar a subfuncion desde fuera de la funcion principal

dentro de onload obtienes la referencia del elemento al que quieres registrar el evento, en este caso el input. hay multiples formas de como obtener, una de ella es mediante document.getElementById. luego de obtener la referencia, registras el evento. en esta registracion simplemente podrias asignar el nombre de la funcion.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Etiquetas: subfuncion
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:49.