私のeval()
呼び出しはかなり集中的で、各ソリューションを生成するのに約 1 秒かかります。
したがって、各段落要素を生成するのに約 1 秒かかります (これを dom - に追加しますdocument.getElementById('project_euler_solutions').appendChild(p);
)。
したがって、各段落が約 1 秒間隔で Web ページに表示されることを期待していました。(つまり、約 40 秒後には 40 段落が表示されます)。
しかし、ボタンをクリックすると、40 秒間何も起こらず、すべてのソリューションが一度に表示されます。
dom を更新する前に、それらすべてが終了するのを待つのはなぜですか?
DOMに追加されるとすぐに各段落が表示されると思いました
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<script src="http://ajax.microsoft.com/ajax/jquery/jquery-1.6.2.min.js"></script>
<script src="/statics/project_euler.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("button").click(function(){
for (var i in window) {
if (i.slice(0,5) == "solve") {
var p = document.createElement('p');
p.innerHTML = "running: " + i;
document.getElementById('project_euler_solutions').appendChild(p);
var p = document.createElement('p');
p.innerHTML = "Solution: " + eval(i + "()");
document.getElementById('project_euler_solutions').appendChild(p);
}
}
});
});
</script>
</head>
<body>
<div id="project_euler_solutions"><button>Calculate solutions</button></button></div>
</body>
</html>