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//funcion que printa en la web (genera codigo html) de los productos añadidos
function play(){
var msg_text = document.getElementById("msg_text");
//removing the list
if ( msg_text.hasChildNodes() ){
while ( msg_text.childNodes.length >= 1 ){
msg_text.removeChild( msg_text.firstChild );
}
}
//volvemos a crear la lista
var ul = document.createElement("ul");
//rellenamos la lista entera al completo
rellenar(ul);
msg_text.appendChild(ul);
}
function rellenar(ul){
if(i < listaGeneral.length) {
i++;
var li = document.createElement("li");
if(listaGeneral[i].tipo=="message"){
var mensajeMostrado = "<span class=message>"+listaGeneral[i].numero+": "+listaGeneral[i].nombre1+" le dice a "+listaGeneral[i].nombre2+" : "+listaGeneral[i].mensaje+"</span>";
}else{
var mensajeMostrado = "<span class=order>"+listaGeneral[i].numero+": "+listaGeneral[i].mensaje+"</span>";
}
li.innerHTML = mensajeMostrado;
ul.appendChild(li);
setTimeout(function(){rellenar(ul);}, 1000);
}
}