<a id="test" onClick="testStart()">aaa</a>
<script language="javascript">
var i=10
function testStart(){
document.all.test.innerHTML=i
if (i-- >0) setTimeout("testStart()",200)
}
</script>看来你只能这样了,一开始设计你的这个过程的时候,就要考虑让他能不时的中断一下(是用setTimeout然后暂时退出过程)
否则你即使找到立即更新的办法,浏览器也会提示用户这个过程太长了,要不要终止,怎么可以

解决方案 »

  1.   

    我猜想  页面刷新是在一个线程中进行的,但这个线程级别最低,当别的操作频繁的时候,就把它靠后了。
    一般的winows程序也是这样,如果在窗口控件变换的时候,正好遇到长循环,假如不使用postmessage API函数通知响应系统消息,更新就不会发生。
      

  2.   

    采用setTimeout是解决这个问题的好办法!
      

  3.   

    使用dom确实比较慢,这个我也不清楚为什么不过如果用document.write 会比dom快不少~~
      

  4.   

    你程序最开始的函数,可以调用多个setInterval()函数,同时最外面设置一个全局变量。
    一个setInterval()用来循环,一个用来根据全局变量clearInterval()。
      

  5.   

    非常感谢楼上几位!总结一下的话就是:
    用 setTimeout(或者其他兼容办法,如 setInterval)开另一个线程。但是这样一来问题又有了:
    1. 咱们不知道刷新显示需要多长时间,timeout 太小了刷不了,太大了浪费时间,如果循环次数大的话会很明显的。
    2. 一用 setTimeout 整个函数调用结构都会变的!改程序工作量先不说了,改完了之后的结构让人理解也是困难的。于是乎,又有了一个思路(注:联想自大花猫的发言):能不能像 Windows 程序里那样,通过调用一个什么过程(比如函数),做到刷新页面显示呢?(如果可以,我猜这是最高效的解决办法)谢谢各位。