2015-10-06 55 views
-1

如何在循环(javascript)中立即写入文档?

while(something) 
 
{ 
 
setTimeout(function() 
 
{ 
 
var btn = document.createElement("P"); 
 
     var t = document.createTextNode(str); //str->string variable 
 
\t btn.appendChild(t); 
 
     document.body.appendChild(btn); 
 
\t },1000); 
 
}

我的程序应该是每一个时间的延迟后,立即写出来的str变量,但它只是在最后写出来。 任何解决方案,使其即时?

+0

这就是设置超时一样。 – Manu

+0

你确实知道这段代码在做什么? –

+0

如果你想立即删除setTimeout .... – Manu

回答

1

我可能会用setInterval代替。这将每Xms调用你的函数,直到你取消它。

if (something) { 
    var interval = setInterval(function() { 
     if (!something) { 
      clearInterval(interval); 
     } 
     var btn = document.createElement("P"); 
     var t = document.createTextNode(str); //str->string variable 
     btn.appendChild(t); 
     document.body.appendChild(btn); 
    }, 1000); 
} 

https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setInterval

0

如果您要立即运行,那么你将不得不在setTimeout之前调用它,我让你碰上一个名为函数的代码:

 function doSomething() { 
    var btn = document.createElement("P"); 
var t = document.createTextNode(str); //str->string variable  
btn.appendChild(t); document.body.appendChild(btn); 
     } 

说它:doSomething();

而他们设置超时!

setTimeout(doSomething, 100);

或者,也许使用的setInterval,而不是setTimeout的。

一起:

function doSomething() { 
var btn = document.createElement("P"); 
    var t = document.createTextNode(str); //str->string variable  
    btn.appendChild(t); document.body.appendChild(btn); 
}; 
doSomething(); 
setTimeout(doSomething, 100);