Ver Mensaje Individual
  #7 (permalink)  
Antiguo 20/05/2010, 15:20
galorn
 
Fecha de Ingreso: abril-2010
Ubicación: L'Hospitalet de LLobregat
Mensajes: 43
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: problemas con seTimeout()

Si, estaba bien como decias, el problema era otro.
La cuestion estaba en como trataba la llamada a la funcion, que con un for no estaba bien ya que iva llamando y aumentando el valor de i, entonces cuando queria printar ya no tenia la i valor maximo y aun no se habia ejecutado en ningun momento (ya que tenia puesto 1000 como valor, y un bucle while va mucho mas rapido).

ahi va la solución:
Código Javascript:
Ver original
  1. //funcion que printa en la web (genera codigo html) de los productos añadidos
  2. function play(){
  3.     var msg_text = document.getElementById("msg_text");
  4.     //removing the list
  5.     if ( msg_text.hasChildNodes() ){
  6.         while ( msg_text.childNodes.length >= 1 ){
  7.         msg_text.removeChild( msg_text.firstChild );      
  8.         }
  9.     }
  10.    
  11.     //volvemos a crear la lista
  12.     var ul = document.createElement("ul");
  13.    
  14.     //rellenamos la lista entera al completo
  15.     rellenar(ul);
  16.    
  17.     msg_text.appendChild(ul);
  18. }
  19.  
  20. function rellenar(ul){
  21.    
  22.      if(i < listaGeneral.length) {
  23.             i++;
  24.             var li = document.createElement("li");
  25.            
  26.             if(listaGeneral[i].tipo=="message"){
  27.                
  28.                 var mensajeMostrado = "<span class=message>"+listaGeneral[i].numero+": "+listaGeneral[i].nombre1+" le dice a "+listaGeneral[i].nombre2+" : "+listaGeneral[i].mensaje+"</span>";
  29.             }else{
  30.                 var mensajeMostrado = "<span class=order>"+listaGeneral[i].numero+": "+listaGeneral[i].mensaje+"</span>";
  31.             }
  32.            
  33.             li.innerHTML = mensajeMostrado;
  34.            
  35.             ul.appendChild(li);
  36.             setTimeout(function(){rellenar(ul);}, 1000);
  37.      }
  38. }