2

MooTools 1.4.5を使用していますが、時間がかかる関数を呼び出す前にカーソルを変更し、同じ関数を終了した後、カーソルをデフォルトに設定します。私は成功しませんでした。

その後、プレーンJavaScript(jQueryまたはMooToolsプラグインなし)を介して背景色を変更する簡単な例を作成しましたが、やはり成功しませんでした。

これが私のコードです。

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>

    </div>
    </form>
</body>
    <script type="text/javascript">
    <!--
        document.body.style.background = 'red';
        setTimeout(function () {  }, 1250);
        document.body.style.background = 'yellow';
    //-->    
    </script>
</html>

まず、背景色を赤に設定し、遅れて黄色に設定しました。背景色は赤に設定され、遅延後に黄色に設定されると想定しました。動作しません。ページが読み込まれると、背景色は黄色になります(最後の行)。背景色を設定する行の中央にアラート機能を挿入すると、すべてが正常に機能します(背景色は赤、メッセージボックスをクリックすると、背景色は黄色になります)。なぜそれがうまくいくのですか?最後に変更されたスタイルのみが影響を受けます。10秒かかる関数を呼び出す前にポインタを変更し、関数の実行後にカーソルをデフォルト値に設定するには、そのようなものが必要です。

4

2 に答える 2

2

setTimeout「待つ」という意味ではありません。後で指定した関数を呼び出します。実行の流れはすぐに続きます。

document.body.style.background = 'red';
setTimeout(function () {
    document.body.style.background = 'yellow';
}, 1250);

そのため、これも機能します。

setTimeout(function () {
    document.body.style.background = 'yellow';
}, 1250);
document.body.style.background = 'red';

カーソルの場合は、.background = 'red'.cursor = 'wait'に置き換えるだけです。.background = 'yellow'.cursor = 'default'

document.body.style.cursor = 'wait';
setTimeout(function() {
    doSomethingExpensive();
    document.body.style.cursor = 'default';
}, 10);
于 2012-06-02T22:24:27.450 に答える
1

の最初のパラメータsetTimeout()はコールバック関数であり、遅延後に呼び出されます。次の種類のコードを使用する必要があります。

document.body.style.background = 'red';
document.body.style.cursor = 'wait';
setTimeout(function(){ 
   document.body.style.background = 'yellow'; 
   document.body.style.cursor = 'default';
}, 1250);
body { 
    width: 100%;
    height: 100%;
}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est eleifend mi, non fermentum diam nisl sit amet erat. Duis semper. Duis arcu massa, scelerisque vitae, consequat in, pretium a, enim. Pellentesque congue. Ut in risus volutpat libero pharetra tempor. Cras vestibulum bibendum augue. Praesent egestas leo in pede. Praesent blandit odio eu enim. Pellentesque sed dui ut augue blandit sodales. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aliquam nibh. Mauris ac mauris sed pede pellentesque fermentum. Maecenas adipiscing ante non diam sodales hendrerit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est eleifend mi, non fermentum diam nisl sit amet erat. Duis semper. Duis arcu massa, scelerisque vitae, consequat in, pretium a, enim. Pellentesque congue. Ut in risus volutpat libero pharetra tempor. Cras vestibulum bibendum augue. Praesent egestas leo in pede. Praesent blandit odio eu enim. Pellentesque sed dui ut augue blandit sodales. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aliquam nibh. Mauris ac mauris sed pede pellentesque fermentum. Maecenas adipiscing ante non diam sodales hendrerit. Lorem ipsum.

setTimeoutについて詳しくは、こちらをご覧ください

于 2012-06-02T22:26:27.000 に答える