请问在这段javascript代码里,for循环中的语句为什么不循环执行?

来源:百度知道 编辑:UC知道 时间:2024/05/23 11:46:30
代码如下:
<script language="javascript">

for(i=1;i<10;i++)
{
setTimeout("document.write(i)",1000);
}

j = i-1;
document.write(j);

</script>

为什么setTimeout("document.write(i)",1000); 这一句只执行了一次??谢谢指教!
谢谢,的确用alert()就可以实现,不过我想知道的是为什么用document.write(i)就不行呢?它是怎样冲了代码的?其原理和机制是什么?我完全搞不明白,谢谢指教!!!

的确会清空页面,但是因为在循环中所有的setTimeout都应该有延时,所以即使清空也应该是一个可见的过程啊,即可以看到页面显示从1-9或从10-19的变化显示啊?为什么没有呢?请指教!

document.write对输出流操作,你的文档加载完成时,输出流自动关闭,此时setTimeout延时调用document.write打开一个新的输出流,就会清空页面内容

你运行你的代码,在document.write新开输出流之后,查看源文件,就可以看到document.write到底write出了什么东东~

================================================
你的代码是先执行了document.write(j);,然后执行setTimeout输出,而此时i已经为10了
=====
<script language="javascript">
setTimeout("document.write('1');document.bgColor='blue'",1);
document.bgColor="red"
document.write('9')
</script>
运行一下,可以看到背景红色闪一下,这说明即使设置1毫秒也是document.write('9')先于setTimeout执行,setTimeout执行时,是新开的输出流,由于偶对IE的原理不太清楚,也说不好是不够快还是输出关闭以后才可以开始setTimeout,哎,晕了,等高手吧~

document.write(i)不行,你改成alert(i)肯定行.
document.write冲了源码.

document.write()只写出一次,如果你点击刷新,就会再次看到改变,而且还是改变一次