1

我用谷歌搜索了几个答案,但我的问题仍然存在。我在 IIS 7 上有一个 .net 网页,代码在 IE9 中运行良好,但在 Firefox 中运行良好。我需要它在两者中都起作用。不知道我做错了什么,请帮忙。

这是一个带有一个多行文本框的简单页面,当我单击提交时,应该会弹出一个隐藏的 DIV 并说,请稍候,此过程中...不要单击任何内容。(他们可能会提交 1000 个项目,因此需要时间。)

奇怪的是我注意到如果我取消注释警报按钮,警报弹出并且我确实看到了 DIV,但是如果我拿走警报按钮,我就看不到它。

这是我的javascript。

function do_totals1()
    {
        // alert("Here-1");
        document.getElementById('pleasewaitScreen').style.display = 'block';

        // alert("Here-2!");
        do_totals2();

         window.setTimeout(function () {
         "do_totals2()";
         }, 4000);
        //            
        // alert("Here-3!");
        // window.setTimeout("do_totals2()", 1);
     }

function do_totals2()
    {
         alert("Here-4!");
         wait(4000);
         document.getElementById('pleasewaitScreen').style.display = 'none';
    }



<div id="pleasewaitScreen" style="display:none;position:absolute;z-index:5;top:50%;left:5%;">
 <table bgcolor="#000000" border="1" style="border-color:blue; height:300;width:400" cellpadding="0" cellspacing="0">
    <tr>
        <td style="width:100%;height:100%" bgcolor="#CCCCCC" align="center" valign="middle">
        <br /><br />  
        <font face="Helvetica,Verdana,Arial" size="5" color="#000066"><b>Processing... Don't click on anything until ESN(s) populate the grid below.</b></font>
            <br /><br />
        </td>
    </tr>
 </table>
</div>
4

3 回答 3

2

这可能是您要求的:

function do_totals1() {
    document.getElementById('pleasewaitScreen').style.display = 'block';
    // we don't want to call do_totals2 directly, because it is what hides the element.
    window.setTimeout(do_totals2, 4000);  // setTimeout accepts a function reference
}

function do_totals2() {
    // if wait is effectively a thread sleep function, you don't want to use it.
    // if javascript doesn't release control of the thread (there's only one for your browser tab), 
    //the UI will never be updated, and you won't see that the element was shown.
    document.getElementById('pleasewaitScreen').style.display = 'none';
}

如果您所做的只是显示一个元素,然后在 4 秒后将其隐藏,您可以这样做:

function do_totalsN(){
    var ele = document.getElementById('pleasewaitScreen');
    ele.style.display = 'block';
    setTimeout(function(){
        ele.style.display = 'none';
    }, 4000);
}
于 2013-01-24T16:59:59.527 回答
0

如果您只想显示“请稍候,此过程中...”,然后在 4 秒后清除它,这样就可以了

function do_totals1()
{
    document.getElementById('pleasewaitScreen').style.display = 'block';
    setTimeout(function() {
        document.getElementById('pleasewaitScreen').style.display = 'none';
    }, 4000);
}
于 2013-01-24T17:01:14.543 回答
-1

好吧,基本上你不会这样称呼它,你要么这样做:

window.setTimeout("do_totals2();",4000);

或者

window.setTimeout(function(){
    do_totals2();
},4000);

所以基本上,删除引号,你会没事的

这里有更多信息

http://www.w3schools.com/jsref/met_win_settimeout.asp

于 2013-01-24T17:01:44.210 回答