Foros del Web » Programando para Internet » Javascript »

como modificar esta funcion js para que me funcione bien...

Estas en el tema de como modificar esta funcion js para que me funcione bien... en el foro de Javascript en Foros del Web. Hola, no consigo hacer funcionar la funcion js para que no me de errores, la funcion consiste en mostrar los nombres en pantalla de un ...
  #1 (permalink)  
Antiguo 08/11/2011, 05:15
 
Fecha de Ingreso: abril-2011
Mensajes: 867
Antigüedad: 13 años
Puntos: 5
como modificar esta funcion js para que me funcione bien...

Hola, no consigo hacer funcionar la funcion js para que no me de errores, la funcion consiste en mostrar los nombres en pantalla de un archivo xml, estos nombres los debe mostrar uno a uno con un intervalo de 5 segundos entre ellos, pero mi problema es que cada vez que cambio el archivo xml este me tarda 5 segundos en mostrarme el resultado en pantalla y esto es lo que no quiero, osea que lo que intento conseguir es que cada vez que hago una nueva peticion para abrir el archivo xml me muestre los resultados al momento y una vez mostrado el primer resultado que me lo cambie por el siguiente resultado con el intervalo de 5 segundo, si alguien me pudiera decir como lograrlo, tambien tengo otro problema es el siguiente, cuando el archivo xml no contiene datos me da error me dice que lo defina y no consigo hacer que me muestre un texto por defecto cuando el archivo no contiene nada, bueno espero que se me entendiera pongo codigo por si alguien me hecha una mano, saludos.

despues de crear la instancia con el objeto xmlhttp_request, creo otra funcion que es la que me abrira el archivo xml que actualizo cada vez que llamo a esta funcion y posteriormente esta ultima funcion que es la que no consigo hacer funcionar bien, que es la que trabajaria con los datos del xml actualizado.

Código Javascript:
Ver original
  1. var pos = 0;
  2.  function Nombres_empreados(){
  3.           nombre = xml.getElementsByTagName('nombre')[pos].firstChild.nodeValue;
  4.  
  5. document.getElementById("registro").innerHTML ='<p>'+nombre+'</p>';
  6. pos++
  7.                      
  8.                      if(pos>=(xml.getElementsByTagName('nombre')[pos].firstChild.nodeValue.length)){pos = 0}
  9.             }
  10.        
  11.  
  12. window.onload = Nombres_empreados;
  13. setInterval(Nombres_empreados,3000)

cualquier ayuda se agradece, saludos.
  #2 (permalink)  
Antiguo 08/11/2011, 08:43
Avatar de Rappa  
Fecha de Ingreso: noviembre-2011
Ubicación: Montevideo, Uruguay
Mensajes: 80
Antigüedad: 12 años, 5 meses
Puntos: 13
Respuesta: como modificar esta funcion js para que me funcione bien...

En una primer leida, te diria que cuando comparas las posicion con el largo, no deberías hacerlo con el largo del valor (.nodeValue), sino con la coleccion entera.

Sustituye esto
Código:
xml.getElementsByTagName('nombre')[pos].firstChild.nodeValue.length
Por esto
Código:
xml.getElementsByTagName('nombre').length
  #3 (permalink)  
Antiguo 08/11/2011, 09:00
 
Fecha de Ingreso: abril-2011
Mensajes: 867
Antigüedad: 13 años
Puntos: 5
Respuesta: como modificar esta funcion js para que me funcione bien...

Rappa tienes razon, pero mi gran problema es lo que postee arriba, gracias de todas formas, saludos.
  #4 (permalink)  
Antiguo 08/11/2011, 09:08
Avatar de Rappa  
Fecha de Ingreso: noviembre-2011
Ubicación: Montevideo, Uruguay
Mensajes: 80
Antigüedad: 12 años, 5 meses
Puntos: 13
Respuesta: como modificar esta funcion js para que me funcione bien...

Código Javascript:
Ver original
  1. var pos = 0;
  2. function Nombres_empreados(){
  3.           nombre = xml.getElementsByTagName('nombre')[pos].firstChild.nodeValue;
  4.           document.getElementById("registro").innerHTML ='<p>'+nombre+'</p>';
  5.           pos++;
  6.           if(pos>=(xml.getElementsByTagName('nombre').length)){pos = 0}
  7.           setTimeout(Nombres_empreados,3000);
  8. }
  9.  
  10. window.onload = Nombres_empreados;

Prueba con esto, una llamada recurrente al final de la función.
  #5 (permalink)  
Antiguo 08/11/2011, 09:14
 
Fecha de Ingreso: abril-2011
Mensajes: 867
Antigüedad: 13 años
Puntos: 5
Respuesta: como modificar esta funcion js para que me funcione bien...

Rappa me lo mirare y te dire algo, pero asin previsto cuando el archivo xml no contenga datos me dara error diciendo que nombre=xml.getElementByTagName('nombre')[pos].firstchild.nodeValue; no esta definido, como puedo solucionar esto, saludos.
  #6 (permalink)  
Antiguo 08/11/2011, 09:21
Avatar de Rappa  
Fecha de Ingreso: noviembre-2011
Ubicación: Montevideo, Uruguay
Mensajes: 80
Antigüedad: 12 años, 5 meses
Puntos: 13
Respuesta: como modificar esta funcion js para que me funcione bien...

Código Javascript:
Ver original
  1. var pos = 0;
  2. function Nombres_empreados(){
  3.           if(xml.getElementsByTagName('nombre').length>0){
  4.                     nombre = xml.getElementsByTagName('nombre')[pos].firstChild.nodeValue;
  5.                     document.getElementById("registro").innerHTML ='<p>'+nombre+'</p>';
  6.                     pos++;
  7.                     if(pos>=(xml.getElementsByTagName('nombre').length)){pos = 0}
  8.                     setTimeout(Nombres_empreados,3000);
  9.           }else{
  10.                     document.getElementById("registro").innerHTML ='<p>El texto que quieras</p>';
  11.                     setTimeout(Nombres_empreados,3000);
  12.           }
  13. }
  14.  
  15. window.onload = Nombres_empreados;


Servirá esto?
  #7 (permalink)  
Antiguo 08/11/2011, 09:29
 
Fecha de Ingreso: abril-2011
Mensajes: 867
Antigüedad: 13 años
Puntos: 5
Respuesta: como modificar esta funcion js para que me funcione bien...

Rappa gracias por tu colaboracion ahora no puedo mirarlo, luego lo miro y te digo que tal me fue, un saludo.
  #8 (permalink)  
Antiguo 08/11/2011, 14:29
 
Fecha de Ingreso: abril-2011
Mensajes: 867
Antigüedad: 13 años
Puntos: 5
Respuesta: como modificar esta funcion js para que me funcione bien...

Rappa lo probe pero no me funciona no me muestra nada en pantalla, eh mirado la consola de errores y no me muestra errores, mire la consola web y me abre el archivo xml pero en la pantalla no me muestra nada, la funcion que me abre el archivo xml es esta.

Código Javascript:
Ver original
  1. function AbrirXML() {
  2.         var ajax = objetoAjax();
  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.                                
  9.                         }
  10.                 }
  11.         }
  12.         ajax.send(null);
  13. }
no entiendo porque no me funciona, no se como tengo que poner la cabecera para trabajar con xml, si me podeis ayudar se agradece, saludos.

Última edición por roboty; 08/11/2011 a las 15:12
  #9 (permalink)  
Antiguo 09/11/2011, 06:28
Avatar de Rappa  
Fecha de Ingreso: noviembre-2011
Ubicación: Montevideo, Uruguay
Mensajes: 80
Antigüedad: 12 años, 5 meses
Puntos: 13
Respuesta: como modificar esta funcion js para que me funcione bien...

Declaraste la variable llamada "xml" globalmente?

Dónde haces el llamado a la función abrirXML() ?
__________________
Drugs and alcohol are not the answer
Unless you are asking what i'm doing this weekend
  #10 (permalink)  
Antiguo 09/11/2011, 09:13
 
Fecha de Ingreso: abril-2011
Mensajes: 867
Antigüedad: 13 años
Puntos: 5
Respuesta: como modificar esta funcion js para que me funcione bien...

Rappa no la declare como deberia hacerlo algo asin xml=null;
  #11 (permalink)  
Antiguo 09/11/2011, 09:19
Avatar de Rappa  
Fecha de Ingreso: noviembre-2011
Ubicación: Montevideo, Uruguay
Mensajes: 80
Antigüedad: 12 años, 5 meses
Puntos: 13
Respuesta: como modificar esta funcion js para que me funcione bien...

Prueba esto:
Código Javascript:
Ver original
  1. var pos = 0;
  2. function Nombres_empreados(){
  3.      var ajax = objetoAjax();
  4.      abrirXML(ajax);
  5.      if(xml.getElementsByTagName('nombre').length>0){
  6.            nombre = xml.getElementsByTagName('nombre')[pos].firstChild.nodeValue;
  7.            document.getElementById("registro").innerHTML ='<p>'+nombre+'</p>';
  8.            pos++;
  9.            if(pos>=(xml.getElementsByTagName('nombre').length)){pos = 0}
  10.            setTimeout(Nombres_empreados,3000);
  11.        }else{
  12.            document.getElementById("registro").innerHTML ='<p>El texto que quieras</p>';
  13.            setTimeout(Nombres_empreados,3000);
  14.    }
  15. }
  16.  
  17. window.onload = Nombres_empreados;

Con la otra función asi:
Código Javascript:
Ver original
  1. function AbrirXML(ajax) {
  2.            ajax.open('get','archivo.xml');
  3.            ajax.onreadystatechange = function() {
  4.                       if(ajax.readyState == 4){
  5.                                  if(ajax.status == 200) {
  6.                                             xml=ajax.responseXML;
  7.                                  }
  8.                       }
  9.            }
  10.            ajax.send(null);
  11. }
__________________
Drugs and alcohol are not the answer
Unless you are asking what i'm doing this weekend
  #12 (permalink)  
Antiguo 09/11/2011, 16:34
 
Fecha de Ingreso: diciembre-2005
Mensajes: 34
Antigüedad: 18 años, 5 meses
Puntos: 0
Respuesta: como modificar esta funcion js para que me funcione bien...

Cita:
Iniciado por Rappa Ver Mensaje
Prueba esto:
Código Javascript:
Ver original
  1. var pos = 0;
  2. function Nombres_empreados(){
  3.      var ajax = objetoAjax();
  4.      abrirXML(ajax);
  5.      if(xml.getElementsByTagName('nombre').length>0){
  6.            nombre = xml.getElementsByTagName('nombre')[pos].firstChild.nodeValue;
  7.            document.getElementById("registro").innerHTML ='<p>'+nombre+'</p>';
  8.            pos++;
  9.            if(pos>=(xml.getElementsByTagName('nombre').length)){pos = 0}
  10.            setTimeout(Nombres_empreados,3000);
  11.        }else{
  12.            document.getElementById("registro").innerHTML ='<p>El texto que quieras</p>';
  13.            setTimeout(Nombres_empreados,3000);
  14.    }
  15. }
  16.  
  17. window.onload = Nombres_empreados;

Con la otra función asi:
Código Javascript:
Ver original
  1. function AbrirXML(ajax) {
  2.            ajax.open('get','archivo.xml');
  3.            ajax.onreadystatechange = function() {
  4.                       if(ajax.readyState == 4){
  5.                                  if(ajax.status == 200) {
  6.                                             xml=ajax.responseXML;
  7.                                  }
  8.                       }
  9.            }
  10.            ajax.send(null);
  11. }
__________________
Joel_fe
Webmaster
http://www.mercadodeanuncios.com
  #13 (permalink)  
Antiguo 09/11/2011, 16:34
 
Fecha de Ingreso: diciembre-2005
Mensajes: 34
Antigüedad: 18 años, 5 meses
Puntos: 0
Respuesta: como modificar esta funcion js para que me funcione bien...

Cita:
Iniciado por Rappa Ver Mensaje
Prueba esto:
Código Javascript:
Ver original
  1. var pos = 0;
  2. function Nombres_empreados(){
  3.      var ajax = objetoAjax();
  4.      abrirXML(ajax);
  5.      if(xml.getElementsByTagName('nombre').length>0){
  6.            nombre = xml.getElementsByTagName('nombre')[pos].firstChild.nodeValue;
  7.            document.getElementById("registro").innerHTML ='<p>'+nombre+'</p>';
  8.            pos++;
  9.            if(pos>=(xml.getElementsByTagName('nombre').length)){pos = 0}
  10.            setTimeout(Nombres_empreados,3000);
  11.        }else{
  12.            document.getElementById("registro").innerHTML ='<p>El texto que quieras</p>';
  13.            setTimeout(Nombres_empreados,3000);
  14.    }
  15. }
  16.  
  17. window.onload = Nombres_empreados;

Con la otra función asi:
Código Javascript:
Ver original
  1. function AbrirXML(ajax) {
  2.            ajax.open('get','archivo.xml');
  3.            ajax.onreadystatechange = function() {
  4.                       if(ajax.readyState == 4){
  5.                                  if(ajax.status == 200) {
  6.                                             xml=ajax.responseXML;
  7.                                  }
  8.                       }
  9.            }
  10.            ajax.send(null);
  11. }
Cita:
Iniciado por roboty Ver Mensaje
Rappa me lo mirare y te dire algo, pero asin previsto cuando el archivo xml no contenga datos me dara error diciendo que nombre=xml.getElementByTagName('nombre')[pos].firstchild.nodeValue; no esta definido, como puedo solucionar esto, saludos.
__________________
Joel_fe
Webmaster
http://www.mercadodeanuncios.com

Etiquetas: funcion, html, js, modificar
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 15:54.