我想michael_monkey(从头再来)根本没有明白我的意思,也可能没认真想过我的问题吧!试看下面的代码: <DIV ID="divPrompt"> <INPUT TYPE="BUTTON" onclick=fnTest() value="test"> <SCRIPT LANGUAGE="JavaScript"> <!-- function fnTest(){ var oTab = null; oTab = document.createElement("TABLE"); document.body.insertBefore(oTab); divPrompt.innerHTML = "Loading data now ... "; for(var i = 0; i < 500; i++){ oTab.insertRow().insertCell().innerHTML = "Current value of variable i is " + i; } } //--> </SCRIPT>按照正常的运行逻辑,在点击按钮“Test”后,屏幕应该马上出现Loading data now ...的提示,没错吧,但是,就是因为下面有一个长时间的循环语句,所以在运行的时候,屏幕不会立即出现相应的提示,而是等循环运行完毕之后才出来。这显然不是我所想要的结果。。
for(i=0;i<5;i++) {
alert("baisun");
}</script>
为何不可?
用java的线程可以试试吧
function action1{ //要花很长时间执行的动作document.msg.style.visibility="visible"; //显示让用户等候的信息真正要执行的任务
……………………
//document.innerText="改变提示内容" //这里可以改变提示的内容
……………………document.msg.style.visibility="hidden"; //显示让用户等候的信息}
</script>
<button onclick="action1()">
<DIV ID="divPrompt">
<INPUT TYPE="BUTTON" onclick=fnTest() value="test">
<SCRIPT LANGUAGE="JavaScript">
<!--
function fnTest(){
var oTab = null;
oTab = document.createElement("TABLE");
document.body.insertBefore(oTab);
divPrompt.innerHTML = "Loading data now ... ";
for(var i = 0; i < 500; i++){
oTab.insertRow().insertCell().innerHTML = "Current value of variable i is " + i;
}
}
//-->
</SCRIPT>按照正常的运行逻辑,在点击按钮“Test”后,屏幕应该马上出现Loading data now ...的提示,没错吧,但是,就是因为下面有一个长时间的循环语句,所以在运行的时候,屏幕不会立即出现相应的提示,而是等循环运行完毕之后才出来。这显然不是我所想要的结果。。
<DIV ID="divPrompt"></div>
<INPUT TYPE="BUTTON" ID="btnStartLoadData" onclick=fnStartLoadData() value="Load ...">
<INPUT TYPE="button" onclick=fnCancel() value="cancel">
<SCRIPT LANGUAGE="JavaScript">
<!--
// ****************************************************************************
var _ExecTimerID = null;
function _InterruptExec(i, N, strFnProcess, strFnEndProcess){
if(i++ < N){
_ExecTimerID = window.setInterval(
"_InterruptExec(" + i
+ ", " + N
+ ", '" + strFnProcess + "'"
+ ", '" + strFnEndProcess + "'"
+ ")"
, 0);
eval(strFnProcess)(i);
}else{
window.clearInterval(_ExecTimerID);
eval(strFnEndProcess)();
}
}
// ****************************************************************************
var oTab = null;
function fnStartLoadData(){
divPrompt.innerHTML = "Loading data now ... ";
LoadData();
}function fnCancel(){
window.clearInterval(_ExecTimerID);
btnStartLoadData.disabled = false;
divPrompt.innerHTML += " <b>Operation was be cancelled.</b>";
}function LoadData(){
if(oTab != null)
oTab.removeNode(true); oTab = document.createElement("TABLE");
oTab.border = 1;
document.body.insertBefore(oTab);
btnStartLoadData.disabled = true;
_InterruptExec(0, 400, "ProcessLoadData", "EndProcessLoadData");
}function ProcessLoadData(i){
divPrompt.innerHTML = "Load item " + i;
oTab.insertRow().insertCell().innerHTML = "Current value of variable i is " + i;
}function EndProcessLoadData(){
divPrompt.innerHTML = "Loading data now ... Okay";
btnStartLoadData.disabled = false;
}
//-->
</SCRIPT>