2015-10-06 57 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);