Foros del Web » Programando para Internet » Javascript »

Pasar una variable de una funcion a otra

Estas en el tema de Pasar una variable de una funcion a otra en el foro de Javascript en Foros del Web. Hola, mirad, estoy empezando con el mundillo javascript y este es mi problema Tengo el siguiente codigo javascript, al cual le paso una URL y ...
  #1 (permalink)  
Antiguo 31/07/2009, 22:10
 
Fecha de Ingreso: junio-2006
Mensajes: 84
Antigüedad: 17 años, 9 meses
Puntos: 1
Pasar una variable de una funcion a otra

Hola, mirad, estoy empezando con el mundillo javascript y este es mi problema

Tengo el siguiente codigo javascript, al cual le paso una URL y un destino.

yo llamo a la funcion así

Código HTML:
<script>loadXMLDoc('url.php', 'Result'); </script>
<div id="Result"></div> 
En teoría, el resultado debe devolverlo a la capa Result
El problema lo tengo con la variable del destino. Entra por el loadXMLDoc, pero no pasa al processchange()
Le podría meter el destino manualmente, pero no me interesa, por que tengo que utilizar varias veces este script con diferentes urls y destinos en la misma página

Código HTML:
<script language="JavaScript">

var req = null;

function loadXMLDoc(url, dest) {
   // Internet Explorer
   try { req = new ActiveXObject("Msxml2.XMLHTTP"); }
   catch(e) {
      try { req = new ActiveXObject("Microsoft.XMLHTTP"); }
      catch(oc) { req = null; }
   }

   // Mozailla/Safari
   if (req == null && typeof XMLHttpRequest != "undefined") {
      req = new XMLHttpRequest();
   }
   // Call the processChange() function when the page has loaded
   if (req != null) {
      req.onreadystatechange = processChange(evt,dest);
      req.open("GET", url, true);
      req.send(null);
   }
}

function processChange(evt, dest) {
   // The page has loaded and the HTTP status code is 200 OK
   if (req.readyState == 4) {
      if (req.status == 200) {
	alert (dest);
      // Write the contents of this URL to the searchResult layer
      getObject(dest).innerHTML = req.responseText;
      }
   }
}

function getObject(name) {
   var ns4 = (document.layers) ? true : false;
   var w3c = (document.getElementById) ? true : false;
   var ie4 = (document.all) ? true : false;
	alert (document.getElementById(name));
   if (ns4) return eval('document.' + name);
   if (w3c) return document.getElementById(name);
   if (ie4) return eval('document.all.' + name);
   return false;
}

</script> 
Muchas gracias
  #2 (permalink)  
Antiguo 31/07/2009, 22:28
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: Pasar una variable de una funcion a otra

el evento onreadystatechange esta mal definido. ponlo de esta manera, los eventos son como funciones o metodos que se ejecutan cuando cierta accion sucede. por tanto, lo que tienes que definir en un evento es una funcion. sin embargo, en la siguiente linea estas llamando a una funcion y lo que devuelva esa funcion es asignado al evento:
Código:
      req.onreadystatechange = processChange(evt,dest);

// forma correcta;
      req.onreadystatechange = function(){
processChange(evt,dest);
}
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 01/08/2009, 07:35
 
Fecha de Ingreso: junio-2006
Mensajes: 84
Antigüedad: 17 años, 9 meses
Puntos: 1
Respuesta: Pasar una variable de una funcion a otra

gracias zerokilled...
ahora me funciona

el problema que tengo es que hago varias llamadas a la función loadxmldoc
Código HTML:
<script>
loadXMLDoc('url.php', 'Result'); 
</script>

<div id="Result"></div>

<script>
loadXMLDoc('url2.php', 'Result2'); 
</script>

<div id="Result2"></div> 
Pero sólo se me devuelven los datos a la última llamada.... en este caso, al Result2
como lo puedo solucionar?
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 14:44.