Foros del Web » Programando para Internet » Javascript »

Problema con Function dentro de otra function

Estas en el tema de Problema con Function dentro de otra function en el foro de Javascript en Foros del Web. Hola Buenos días. Tengo una función que busca la información de precio y peso de un producto que selecciono en un select. es decir, en ...
  #1 (permalink)  
Antiguo 04/11/2010, 09:44
 
Fecha de Ingreso: agosto-2009
Mensajes: 19
Antigüedad: 14 años, 7 meses
Puntos: 0
Pregunta Problema con Function dentro de otra function

Hola Buenos días.

Tengo una función que busca la información de precio y peso de un producto que selecciono en un select. es decir, en el onchange se ejecuta esta función. Cuando termina de buscar la información llama dentro de esa funcion a otra funcion a la que llame asignar, que asigna los valores buscados en input text ocultos para luego sacar unas cuentas.

la función ejecuta lo que debe hacer pero me sale un error de ejecución "Object required".

dejo el código: en la parte ROJA es donde llama a la función

function BuscarInformacionProducto(prod,cant,umb,pos,capa)
{
var ret = true;
alert("entro a buscar info");
crearObjeto();
if (objeto.readyState != 0) {
alert('Error al crear el objeto XML. El Navegador no soporta AJAX');
ret=false;
}
else {
// Enviar la consulta
objeto.open("GET", "BuscarInfoProducto.php?Producto="+prod+"&Cantidad ="+cant+"&Umb="+umb+"&Posicion="+pos, true);

// Preparar donde va a recibir el Resultado
objeto.onreadystatechange = function procesaResultado()
{
// Si aun esta revisando los datos...
if (objeto.readyState == 1) {
document.getElementById(capa).innerHTML = "Cargando datos...";
}
// Si el estado es 4 significa que ya termino
if (objeto.readyState == 4) {
// objeto.responseText trae el Resultado que metemos al DIV de arriba
document.getElementById(capa).innerHTML = objeto.responseText;
}
//aqui funciona pero hace algo raro con los campos que dice que no los reconoce
asignar(pos);
}//fin de la funcion procesaResultado

objeto.send(null);


}//fin del else

//alert("aqui deberia"+pos);

//asignar(pos);


return ret;

}

function asignar(pos)
{
var precio="precio"+pos;
var precio2="precio2"+pos;

var peso="peso"+pos;
var peso2="peso2"+pos;

document.getElementById(precio2).value=document.ge tElementById(precio).value;
document.getElementById(peso2).value=document.getE lementById(peso).value;

calcularAcumuladoObs();//otra funcion que calcula los acumulados de los montos

}

NOTa: si coloco la funcion en la parte que esta coloreada de azul, la función entra SOLO si lanzo la alerta antes, cuando comento la linea del alert que dice que ahi deberia de entrar a la funcion, no hace nada... es bastante curioso
  #2 (permalink)  
Antiguo 04/11/2010, 10:04
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Respuesta: Problema con Function dentro de otra function

Prueba colocando asignar(pos); inmediatamente después de document.getElementById(capa).innerHTML = objeto.responseText; te explico algo, talvez no sea esa la solución pero es necesario de todas maneras que te enteres de esto: cuando se trabaja con ajax la ejecución no va como siempre, línea tras líneas. en este caso es diferente, para explicartelo voy a dejar un código:

Código:
function ejemplo() {
  ajax.open('GET', url, true) {
     ajax.onreadystatechange = function() {
  
     if (ajax.readyState == 4) {

     }
  }
  ajax.send(null);
}
OK, la ejecución está en ajax.open, luego pasa a ajax.send, y lo que hay en medio? todavía no llega, está procesando la petición, luego de ajax.send, continúa código abajo hasta el fin de la función. Cuando la petición llega, recién se ejecuta lo que está entre if (ajax.readyState == 4) { }. Esa es la secuencia. Espero que esta explicación te pueda ayudar para que no cometas algunos errores comunes entre los novatos. Suerte!

Última edición por ElJavista; 04/11/2010 a las 13:54
  #3 (permalink)  
Antiguo 04/11/2010, 10:11
 
Fecha de Ingreso: enero-2008
Mensajes: 614
Antigüedad: 16 años, 3 meses
Puntos: 57
Respuesta: Problema con Function dentro de otra function

Puede ser que el valor de pos no este definido ya que estas dentro de otra funcion al llamar asignar(pos). Agrega un alert antes de llamar a asignar(pos) para que veas el valor de pos

Código javascript:
Ver original
  1. //aqui agrega alert(
  2. //aqui funciona pero hace algo raro con los campos que dice que no los reconoce
  3. asignar(pos);    }//fin de la funcion procesaResultado
  #4 (permalink)  
Antiguo 04/11/2010, 10:11
 
Fecha de Ingreso: agosto-2009
Mensajes: 19
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Problema con Function dentro de otra function

ESTUPENDO !!!!

ciertamente esto no lo sabía, pense que era secuencial...

Muchisimas gracias

funcionó perfecto !
  #5 (permalink)  
Antiguo 04/11/2010, 10:15
 
Fecha de Ingreso: agosto-2009
Mensajes: 19
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Problema con Function dentro de otra function

Hola Posman, ya ElJavista me echo una manito, yo tenia el alert precisamente para eso , para saber si el valor de pos estaba llegando, pero haciendo lo que me comento ElJavista se solucionó...

Gracias por la pronta respuesta a ambos

Cita:
Iniciado por posman Ver Mensaje
Puede ser que el valor de pos no este definido ya que estas dentro de otra funcion al llamar asignar(pos). Agrega un alert antes de llamar a asignar(pos) para que veas el valor de pos

Código javascript:
Ver original
  1. //aqui agrega alert(
  2. //aqui funciona pero hace algo raro con los campos que dice que no los reconoce
  3. asignar(pos);    }//fin de la funcion procesaResultado
  #6 (permalink)  
Antiguo 04/11/2010, 10:38
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Respuesta: Problema con Function dentro de otra function

Cita:
Iniciado por Gleomar Ver Mensaje
Hola Posman, ya ElJavista me echo una manito, yo tenia el alert precisamente para eso , para saber si el valor de pos estaba llegando, pero haciendo lo que me comento ElJavista se solucionó...

Gracias por la pronta respuesta a ambos
Con ese nombre tan peculiar es difícil saber si eres hombre o mujer.
  #7 (permalink)  
Antiguo 04/11/2010, 10:43
 
Fecha de Ingreso: agosto-2009
Mensajes: 19
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Problema con Function dentro de otra function

jajajajaja bueno los padres y sus cosas... soy mujer jeje aqui en Venezuela tenemos ciertos nombres "particulares" jeje saludos.
  #8 (permalink)  
Antiguo 04/11/2010, 11:00
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Respuesta: Problema con Function dentro de otra function

OK muñeca, me alegra haberte podido ayudar. Suerte!

Etiquetas: function
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 22:03.