我怎么能在循环中立即写入文档(javascript)



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

我的程序应该每次在延迟后立即写出str变量,但它只在最后写出。有什么即时的解决方案吗?

我可能会使用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

如果你想让它立即运行,那么你必须在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);

最新更新