Javascript 光标指向“等待”,而“时间消费者”在返回标准后运行

Javascript 光标指向“等待”,而“时间消费者”在返回标准后运行,javascript,Javascript,问题是:单击复选框后,我将光标更改为等待,但只有在大约6秒钟后,等待光标才会看到。如何避免这6秒的停顿 非常感谢 维基 代码编辑 <html> <head> <title>Cursor-Test</title> <script type="text/javascript"> var k = 0; var t1 = 0; var t2 = 0; function cursor

问题是:单击复选框后,我将光标更改为等待,但只有在大约6秒钟后,等待光标才会看到。如何避免这6秒的停顿

非常感谢 维基 代码编辑

    <html>
    <head>
    <title>Cursor-Test</title>
    <script type="text/javascript">
    var k = 0;
    var t1 = 0;
    var t2 = 0;
    function cursor_wait() {
      document.body.style.cursor = 'wait';
      t1 = (new Date()).getTime();
      k = k+1;
    }

    function cursor_clear() {
      document.body.style.cursor = 'default';
    }
    function st() {
      setTimeout(calc,500); //wait a bit
    }

    //long time action
    function calc() {
      ta = (new Date()).getTime();
      var dummy = 0;
      k = k+1;
      for (var i=0; i<1000000;i++) {
        for (var z=0; z<2000;z++) {
          dummy = dummy + z + i;
        }
      }
      tb = (new Date()).getTime();
      tr = tb-ta;
      cursor_clear();
      t2 = (new Date()).getTime();
      alert("nach clear, k="+k+" all time:"+(t2-t1)+" computing time:"+tr);
    }
    </script>
    </head>
    <body>
    <h2>Cursor ändern: standard->wait->länger dauernde Aktion->standard</h2>
    <div>wait-cursor erst nach ca. 6 sec</div>
    <form name="some_form" action="index.php" method="get">
    <input type="checkbox" name="nameless" value="5"
     onMouseDown="cursor_wait()" onMouseUp="st()" /> Five
    </form>
    </body>
    </html>
首先,将c设置为光标样式对您没有任何好处。即使定义了c,它也将是一个字符串。更改c的值只会使它指向不同的字符串,而不会更改光标的样式。您可能需要执行以下操作:

    var c = document.body.style;
    var t1 = 0;
    var t2 = 0;
    function cursor_wait() {
      c.cursor = 'wait';
      t1 = (new Date()).getTime();
      k = k+1;
    }

    function cursor_clear() {
      c.cursor = 'default';
    }
    //long time action
    function calc() {
      setTimeout(cursor_clear, 6000);
    }

我删除了其他代码,以便在6秒后清除光标,而不阻塞用户界面时更容易看到可以执行的操作。

当代码消耗用户的CPU时,浏览器不会执行任何其他操作。您希望光标何时从“等待”->“默认”转到“等待”?您是否希望它在循环完成后进入该状态?你想达到什么目的?谢谢你的回答。现在我已经编辑了代码,请参见上文。原始变量c=document.body.style.cursor为null,因为此时未创建document.body对象。mouseup事件现在导致调用一点超时,然后执行计算。