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);