我想实现:如何在JS中强制重绘?
- 用户点击一个元素
- 在屏幕上显示屏幕上的“正在计算”
- 系统执行耗时的数学计算
- 屏幕显示结果( “完成”)
这里的剥离代码:
<div id ="di" onclick="calc()">initial</div>
<script>
function calc()
{
var n,a=0;
document.getElementById('di').textContent="calculation in progress";
for(n=0;n<1000000000;n++) // Here's the time consuming calculation
{
a=a+n; // for clarity's sake, I removed a complicated math formula here
}
document.getElementById('di').textContent="done "+a;
}
</script>
当我运行它并单击div时,它需要一段时间,然后将文本更改为“完成”,因此用户看不到“计算正在进行中”消息 - 这是我的问题。
要强制重画屏幕以在计算开始前显示消息,其他线程建议修改CSS,隐藏并立即取消隐藏元素或使用setTimeout,但没有任何工作。
这将是一个绘制复杂的数学对象(分形)的程序,我将使用画布而不是div,但我简化了上面的示例。由于未来的图形界面,使用“alert()”不是一个选项 - 完成计算后,“计算进行中”屏幕应立即变为“完成”。
您还需要在'setTimeout'调用之前设置双DIV文本,它实际上更新 – Zack
这是你的意思?它仍然不起作用:
@分形阅读示例,评论也是 –