var dt2;
        var st;
        function test() {
            dt1 = new Date();
            st = setTimeout(tt, 1000);
            return true;
        }        function tt() {
            dt2 = new Date();
            if (dt2.getTime() - dt1.getTime() > 1000) {
                clearTimeout(st);
                $("#ttt").html("hahahahaha");return true;
            }
        }
 <div id="ttt" style="height: 100px; border: 1px solid #c0c0c0;" onmousedown="return test();">
        test</div>
用vs调试,长按之后,tt()方法断点可以进去,div的内容可以被更新。
但是,如果不加断点,一直按,就没有任何效果。
请问这是怎么回事啊?我要实现的效果: 长按div,超过一秒就执行后续操作。

解决方案 »

  1.   


      var dt1;
            var dt2;
            var st;
            function test() {
                dt1 = new Date();
                st = setTimeout(tt, 1000);
                return true;
            }        function tt() {
                dt2 = new Date();
                if (dt2.getTime() - dt1.getTime() > 1000) {
                    clearTimeout(st);
                    $("#ttt").html("hahahahaha");return true;
                }
            }
    dt1给漏掉了
      

  2.   

    楼主只有onmousedown事件不够,还要onmouseup事件。。<div id="ttt" style="height: 100px; border: 1px solid #c0c0c0;" onmousedown="return test();" onmouseup="fn()">
            test</div>
    var dt1;
            var dt2;
            var st;
            function fn(){
             dt2 = new Date();   
             if (dt2.getTime() - dt1.getTime() < 1000) {
                    clearTimeout(st);
                    
                }
            }
            function test() {
                dt1 = new Date();                
                st = setTimeout(tt, 1000);
                return true;
            }        function tt() {                     
                $("#ttt").html("hahahahaha");return true;
            }
      

  3.   


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
            <script src="jquery.js" type="text/javascript"></script>
        
    </head>
    <body>
    <div id="ttt" style="height: 100px; border: 1px solid #c0c0c0;" onmousedown="test();" onmouseup="testup()">test</div>
    <script type="text/javascript">
            var timer, timeout = false;
            function test() {
                timer = setTimeout(function(){
                 $("#ttt").html("hahahahaha");
                 timeout = true;
                }, 1000);
                return true;
            }        function testup(){
             if(!timeout){
             clearTimeout(timer);
             }
            }
        </script>
    </body>
    </html>
      

  4.   


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
            <script src="jquery.js" type="text/javascript"></script>
        
    </head>
    <body>
    <div id="ttt" style="height: 100px; border: 1px solid #c0c0c0;" onmousedown="testdown();" onmouseup="testup()">test</div>
    <script type="text/javascript">
            var timer;
            function testdown() {
                timer = setTimeout(function(){
                 $("#ttt").html("hahahahaha");
                }, 1000);
            }
            function testup(){
                clearTimeout(timer);
            }
        </script>
    </body>
    </html>
      

  5.   

    你之所以会碰到这种情况,是因为setTimeout(func, 1000);并不是非常精确到1000毫秒,经我测试经常在990+毫秒,所以没有执行你if里面的语句,你可以试试<div id="ttt" style="height: 100px; border: 1px solid #c0c0c0;" onmousedown="testdown();">test</div>
    <script type="text/javascript">
            var dt2;
            var st;
            function testdown() {
                dt1 = new Date();
                st = setTimeout(tt, 1000);
                //return true;
            }        function tt() {
                dt2 = new Date();
                alert(dt2.getTime() - dt1.getTime());
                if (dt2.getTime() - dt1.getTime() > 1000) {
                    clearTimeout(st);
                    $("#ttt").html("hahahahaha");
                    //return true;
                }
            }
        </script>还有,你少个onmouseup,这样会导致不管你有没有长按,只要你按过鼠标,1秒后就会执行tt()
      

  6.   


    <html>
    <head>
    <title>demo</title>
    <script>
    var timer;
    var starTimer = function(){
         timeoutID = setTimeout(function(){
            alert("动作");
         },1000);
    }
    var clearTimer = function(){
         clearTimeout(timeoutID);
    }
    </script>
    </head>
    <body>
        <div id="ttt" style="height: 100px; border: 1px solid #c0c0c0;"  onmouseover="starTimer();"  onmouseout="clearTimer();"  >
          test
        </div>
    </body>
    </html>混点 。
      

  7.   

    var dt1;
    var dt2;
            var st;
            function test() {
                dt1 = new Date();
                st = setTimeout(tt, 1030);
            }        function tt() {
                st = null;
                $("#ttt").html("hahahahaha");
            }       function clearSt(){
               if(st){clearTimeout(st);}
           } <div id="ttt" style="height: 100px; border: 1px solid #c0c0c0;" onmousedown="test();" onmouseup='clearSt();'>
            test</div>