setTimeout("my_run_click("+event+")", 300);    相当于: setTimeout("my_run_click("+event.toString()+")", 300);改成  setTimeout(function(){my_run_click(event)}, 300);

解决方案 »

  1.   

    不行。event还是在my_run_click里无法正常使用。
      

  2.   

    那是因为延时之后event对象已经不在了~~~
      

  3.   

    xxx = setTimeout("my_run_click('"+event+"')", 300);
      

  4.   


    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>js控制隐藏、显示页面滚动条web开发技术_www.itokit.com</title>
    <style type="text/css"></style>
    <script language="javascript" type="text/javascript">
    var xxx;
    function click_fun() {
        xxx = setTimeout(eval("my_run_click(event)"), 300);    
    }
    function my_run_click(ee) {
        alert('run run ');
            alert(ee);
    }
    function click_fun_end() {    
        if (xxx != null) {
            clearTimeout(xxx);
            alert('no run');
        }
    }
    </script>
    </head>
    <body><span onMouseDown="click_fun();" onMouseUp="click_fun_end();">ffdas</span>
    </body>
    </html>
      

  5.   

    script language="javascript" type="text/javascript">
    var xxx;
    function click_fun(event) {
        xxx = setTimeout(my_run_click(event), 300);    
    }
    function my_run_click(ee) {
        alert('run run ');
            alert(ee);
    }
    function click_fun_end() {    
        if (xxx != null) {
            clearTimeout(xxx);
            alert('no run');
        }
    }
    </script>
    <span onMouseDown="click_fun(event)" onMouseUp="click_fun_end()">ffdas</span>
      

  6.   

    <script language="javascript" type="text/javascript">
    var xxx;
    function click_fun(event) {
        xxx = setTimeout(my_run_click(event), 300);    
    }
    function my_run_click(ee) {
        alert('run run ');
            alert(ee);
    }
    function click_fun_end() {    
        if (xxx != null) {
            clearTimeout(xxx);
            alert('no run');
        }
    }
    </script>
    <span onMouseDown="click_fun(event)" onMouseUp="click_fun_end()">ffdas</span>
      

  7.   


    算了,我不跟你争论,你认为我瞎说也行,不过你下面这一句话:
    xxx = setTimeout(my_run_click(event), 300);   my_run_click(event)是注册回调函数呢还是直接执行函数呢???
      

  8.   


    my_run_click(event)其实是回调一个函数。
    function my_run_click(ee) {
    MyMove.Move('bigseepic',ee,1);
    }这个MyMove.Move 是让弹 出层 进行移动的。里面要用到event来进行拖动判断的。
      

  9.   

    奉劝lz,最好不要想着延时之后还想着要取到event对象,需要里面的参数的话可以取出来保存在另一个对象里面
      

  10.   

    没意思每次你都只喜欢搞嘴皮子还死不承认
    只是LZ写错了用法,你就说对象不存在对你我是在无语
    对象创建了,没有任何的销毁动作他会凭空消失????
    你在什么地方或者什么教程看到setTimeout本身能把对象销毁的?
      

  11.   

    可能真的像你把说的那样吧。但是我现在这个做的只是一个简单的实例。真正我要做的是onclick关闭弹 出的一个层。而onmouseover是想移动弹 出层。所以我现在做的只是用onmouseover来实例onclick。我这个简单的是可以实现实现了。但是移动层的函数必须要用event传进去。因为参数太多了。所以没办法一个个传。而且移动是实
    时在变化的。所以也无法来实现吧。
      

  12.   


    setTimeout(),第一个参数必须要用引号括起来的。我以前也按照你的前面方法。先通这onmousedown把event通过参数传进去。但是在我移动函数里再接收event。虽然是个对象。但是获取不了移动时所需要的方法了。
      

  13.   

    你的效果可以换种写对象方法,不要用event的对象
      

  14.   

    比如this.id传递这样的进去,
    然后再使用docment.getElementById(id)这样的来创建一个对象
      

  15.   

    你首先要了解的是
    event代表事件的状态,例如触发event对象的元素、鼠标的位置及状态、按下的键等等。
    event对象只在事件发生的过程中才有效。
    event的某些属性只对特定的事件有意义。比如,fromElement 和 toElement 属性只对 onmouseover 和 onmouseout 事件有意义所以不是所有情况都适合用event对象
      

  16.   

    的确是。使用了setTimeout过去后的,我使用参数传event过去时。alert(event); 是个对象。但是一些方法就使用不了。
      

  17.   

    所以,你要了解的是event的知识并不是3楼说的对象不存在了
      

  18.   


    我从来没有说是setTimeout把对象销毁了,只是说对象不存在了,因为我记得以前延迟使用event对象取不到里面的东东,所以就说对象不存在了,
    刚刚做了一下实验:在IE下,event对象虽然是一个obj,但是里面的东西都取不到了,这个和我的记忆是一样的,至于是不是对象真的不在了,我的说法可能不正确,这个也没有验证的方法,因为EVENT实现是各个浏览器不同的,但是取不到对象里面的数据却是真的。在ff下,这个我以前没有试过(以前只知道用ie),事件对象一直存在,而不是某些人说的event对象只在事件发生的过程中才有效。 下面是我测试的代码,发出现给大家作为参考:
    <script language="javascript" type="text/javascript">
    var xxx;
    var even;
    function click_fun(ev) {
       even = window.event|| ev;
       my_run_click(even); //马上执行
       xxx = setTimeout(function(){my_run_click(even)}, 3000);    //延时执行
    }
    function my_run_click(even) {
    alert("aa");
    alert(even["type"]);


        
    }window.onload = function(){
    document.getElementById("test").onclick = click_fun;}
    </script><input type="button" id ="test" value="33"/>
      

  19.   


    我试下了。的确是在ie7下。setTimeout后event获取不到里面的方法了。但是在ff2下却是可以了。
      

  20.   

    你自己回头去看看对关于EVENT对象的相关教程再来评论这句话“event对象只在事件发生的过程中才有效”
    这句话不是我自己编的
      

  21.   

    setTimeout后是无法访问到当时发生对象时的事件的,意思就是不能保存event,event不能在延时执行的代码中访问到
    不过可以先获取事件,然后传递进入匿名函数中
      

  22.   

    hzrui 我发现你很喜欢耍嘴皮子
    而且有例子证明,你也还是死不承认直到让你自己亲自测试你才肯说可能是自己表达错误,但还是不承认你自己本身的错误哎服你……