Foros del Web » Programando para Internet » Javascript »

Intento cambiar la dinamica de mi funcion js pero no lo consigo...

Estas en el tema de Intento cambiar la dinamica de mi funcion js pero no lo consigo... en el foro de Javascript en Foros del Web. Hola, hos cuento mi problema sobre una funcion js que no consigo hacerla funcionar como yo quiero, se trata de un archivo xml que a ...
  #1 (permalink)  
Antiguo 05/11/2011, 12:00
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
Intento cambiar la dinamica de mi funcion js pero no lo consigo...

Hola, hos cuento mi problema sobre una funcion js que no consigo hacerla funcionar como yo quiero, se trata de un archivo xml que a traves de una funcion cambio su contenido de forma dinamica, hasta aqui bien. Pero cada vez que cambio el archivo xml llamo a otra funcion js llamada mostrarnombres donde esta llama a otra funcion llamada mostrarregistro donde pretendo mostrar los datos del archivo xml con un intervalo de 10 segundo, lo que pasa que cada vez que cambio el xml y posterior mente llamo a la funcion mostrarnombres que llama a mostrarregistro me tarda 10 segundos en mostrar los resultados en pantalla, pero esto es lo que no quiero osea que cuando llame a mostrarnombre me muestre el primer resultado al momento pero despues el seguiente nombre me lo muestro pasado 10 segundo y asin sucesivamente pero cada vez que cambio el xml que no me tarde 10 segundo en mostrarme la funcion muestro codigo por si me podeis decir como hacerlo.


esta es la funcion que me muestra los datos en uno en uno cambiandolo
var procesamiento, xml = null, contador=0;
Código Javascript:
Ver original
  1. function MostrarRegistro() {
  2.         try {
  3.                 document.getElementById("registro").innerHTML ='<p>'+ xml.getElementsByTagName('nombre')[contador].firstChild.nodeValue+'</p>';
  4.                 contador ++;
  5.         }
  6.         catch(e) {
  7.                 try { window.clearInterval(procesamiento); } catch(e) {}
  8.                 contador = 0;
  9.         }
  10. }

esta es la funcion que llama a mostrarregistro dandole un intervalo de 10 seg
Código Javascript:
Ver original
  1. function MostrarNombres() {
  2.         var ajax = obtiene_http_request();
  3.         ajax.open('get','archivo.xml');
  4.         ajax.onreadystatechange = function() {
  5.                 if(ajax.readyState == 4){
  6.                         if(ajax.status == 200) {
  7.                                 xml=ajax.responseXML;
  8.                                 if(xml.getElementsByTagName('nombre').length > 0)
  9.                                         procesamiento = window.setInterval(MostrarRegistro, 10000);
  10.                         }
  11.                 }
  12.         }
  13.         ajax.send(null);
  14. }

aqui la funcion que me cambia el xml y posteriormente llama a mostrarnombres
Código Javascript:
Ver original
  1. function pedir_xml(){
  2. //................
  3.   if(ajax.readyState == 4){
  4.                         if(ajax.status == 200) {
  5. //................
  6. MostrarNombres();
  7. }
  8. }
  9. }

saludos.
  #2 (permalink)  
Antiguo 05/11/2011, 12:11
 
Fecha de Ingreso: junio-2009
Mensajes: 64
Antigüedad: 14 años, 9 meses
Puntos: 6
Respuesta: Intento cambiar la dinamica de mi funcion js pero no lo consigo...

Y si cambias de lugar el setInterval y lo colocas dentro de pedir_xml(), entonces lo ejecutara 10 segundos despues de que modifiques el archivo, seria

Código Javascript:
Ver original
  1. function pedir_xml(){
  2. //................
  3.   if(ajax.readyState == 4){
  4.                         if(ajax.status == 200) {
  5. //................
  6. procesamiento = window.setInterval(MostrarNombres, 10000);
  7. }
  8. }
  9. }

funcionaria?
  #3 (permalink)  
Antiguo 05/11/2011, 12:32
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: Intento cambiar la dinamica de mi funcion js pero no lo consigo...

Hola PercevalCiro, si que funcionaria haria lo que dices pero eso no es lo que yo quiero, yo intento mostrar la funcion mostrarnombres cada vez que cambio el xml y una vez llamada a la funcion mostrarnombres que esta llama a mostrar registro quiero mostrar los resultados al momento pero solo el primero despues quiero que tarde 10 segundo en ir mostrandome los resultados de los nombres en pantalla osea mostrar el primer nombre y que a los diez segundos cambie por el siguiente, es esto lo que intento, saludos.
  #4 (permalink)  
Antiguo 05/11/2011, 12:47
 
Fecha de Ingreso: junio-2009
Mensajes: 64
Antigüedad: 14 años, 9 meses
Puntos: 6
Respuesta: Intento cambiar la dinamica de mi funcion js pero no lo consigo...

Consulta, el contador es una variable global no?, al igual que xml. Si es asi el caso comprueba el valor de contador si es igual a cero ejecuta la accion inmediatamente caso contrario (else) ejecutar el procesamiento.

Me parece igualmente mas limpio generar el Array y despues imprimirlo, para no tener que utilizar variables globales.

Puede ser?

Saludos.
  #5 (permalink)  
Antiguo 06/11/2011, 16:35
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: Intento cambiar la dinamica de mi funcion js pero no lo consigo...

PercevalCiro me puedes poner un ejemplo haciendolo con arrays, saludos.

Etiquetas: ajax, dinamica, funcion, html, intento, js
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 10:11.