私はこのサンプルコードを持っています:
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="UTF-8">
</head>
<body>
<script>
var EventHandler = {};
EventHandler.writeNumber = function(i){
document.write(i);
};
for(var i=0; i<100; i++) {
(function(i) {
window.setTimeout(function() {
EventHandler.writeNumber(i);
},100*i);
}(i));
}
</script>
</body>
</html>
コードは毎秒ページに数字を書き込みます。Chrome26とSafari5では、正常に動作します。Firefox 18およびIE10では、1回だけ提供されます(ドキュメントに0が書き込まれます)。
に変更document.write
するとconsole.log
、すべてのブラウザで機能します。何故ですか?