2017-12-21 4 views
3

ちょうどこのようなコード:いくつかの操作が完了した後にwindow.promptを実行するには?

for(var node=iterator.iterateNext(),origin_background=node.style.background;node;node=iterator.iterateNext()) 
{ 
    console.log('change color.'); 
    node.style.background="#3E6998"; 
} 
var input_str=window.prompt('Next Step?\n1....'); 
if(input_str=='1') 
    ... 

私はクロームコンソールでそれを実行すると、promptが生じたが、背景がまだ変更されませんでした。 promptの前に背景が変わるようにコードを変更するにはどうすればよいですか?

答えて

2

DOM操作は同期ですが、repaint isn'tです。つまり、彼ら[repainters]はすぐには適用されません、彼らはちょうど自由に時間があるときにブラウザが行うtodosのスタックにプッシュされていることを意味します。これらの種類の非同期ジョブは、実行時にコールバックを持たないため、実行後に何かが実行されることを確実にするためにできることは、何かをtodosのスタックにプッシュすることだけです。

var div = document.getElementById("div"); 
 

 
div.style.background = "green"; 
 

 
setTimeout(function() { 
 
    var name = prompt("Name?"); 
 
    console.log(name); 
 
}, 0);
#div { 
 
    width: 200px; 
 
    height: 200px; 
 
    background: red; 
 
}
<div id="div"></div>

:私たちは、 0の遅延で setTimeoutを使用することによってそれを行うことができます
関連する問題