Ver Mensaje Individual
  #5 (permalink)  
Antiguo 24/01/2008, 05:23
Avatar de derkenuke
derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 21 años, 3 meses
Puntos: 45
Re: orden de ejecucion de las funciones

Hola mikil:

El problema pasa por llamar a fraccionar() cuando acabe de ejecutarse el evento onreadystatechange del objeto ajax que declaras dentro de leer_articulo(). Si la función leer_articulo() fuese javascript normal no tendrías ningún problema, pero al proponer el evento onreadystatechange ya estamos con javascript que no funciona de manera hilada, funciona cuando salta el evento.

Yo haría algo así:
Código PHP:
    ajax.onreadystatechange=function() {
        if (
ajax.readyState==4) {
            
//mostrar los nuevos registros en esta capa
            
divcontenidor.innerHTML ajax.responseText
            fraccionar
();
        }
    } 
Que es la solución básica. Pero como supongo que no quieres que se ejecute siempre fraccionar() después de cada llamada genérica a ese evento, lo que puede hacer es pasar por parámetro la función que quieres que se ejecute después:

Código PHP:
function lleer_articulo(functionDespues){
    
//...
    
ajax.onreadystatechange=function() {
        if (
ajax.readyState==4) {
            
//mostrar los nuevos registros en esta capa
            
divcontenidor.innerHTML ajax.responseText
            
if(typeof functionDespues==="function")
                
functionDespues();
        }
    }
    
//... 
Y se podría llamar desde el HTML de esta forma:
Código PHP:
<input name="i_article" maxlength="10" type="text" id="i_article" size="10 onblur="leer_articulo(fraccionar);" /> 

Espero no haberme equivocado al escribir el código, ni en el ámbito de las variables locales. Supongo que funcionará tanto para leer_articulo( funcionDefinida ) como para leer_articulo(), sin dar errores.

Saludos
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.