1

私はグーグルで検索し、いくつかの答えを試しましたが、問題はまだ発生しています。IIS7に.netWebページがあり、コードはIE9では正常に機能しますが、Firefoxでは機能しません。両方で動作するために必要です。私が間違っていることがわからないので、助けてください。

これは、複数行のテキストボックスが1つある単純なページで、[送信]をクリックすると、非表示の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 に答える