2014-09-21 47 views
0

我想要设置for-loop来逐个打印出msg,我只是推迟了console.log msg,并且appendChild msg与for-loop一起显示的结束。我该如何解决它。javascript - for循环appendChild实时显示

以下是代码 http://jsfiddle.net/wts8gb8g/

function createLogDiv(){ 
    if(document.getElementById("log") == null){ 
     var log = document.createElement("div"); 
     log.id = "log"; 
     document.body.appendChild(log); 
     var css = document.createElement("style"); 
     css.type = "text/css"; 
     css.innerHTML = "#log {width: 400px;height: 200px;background: black;position: absolute;top: 0;opacity: 0.75;color: lime;overflow: auto;text-align: left;margin-top: 46px;}"; 
     document.body.appendChild(css); 
    } 
} 

function log(str){ 
    var xx = document.createElement("div"); 
    xx.innerHTML=str+"</br>"; 
    document.getElementById("log").appendChild(xx); 
    console.log(str); 
} 

function sleep(milliseconds){ 
    var start = new Date().getTime(); 
    for (var i = 0; i < 1e7; i++){ 
    if ((new Date().getTime() - start) > milliseconds){ 
     break; 
    } 
    } 
} 


createLogDiv(); 
for(var i=0;i<5;i++){ 
    log(i); 
    sleep(500); 

回答

0

试着改变你的循环,这样的:

createLogDiv(); 
for(var i=0;i<5;i++) 
{ 
    setTimeout(function(x){log(x)},500*i,i); 
}