<body>
<input type="button" name="Button" value="Button" onclick="aaa(this)"/><script language="javascript">
var obj;
function aaa(o){
obj=o;
window.setTimeout("bbb(obj)",500);
}function bbb(o){
alert(o.value);
}
</script>
</body>

解决方案 »

  1.   


    function aaa(o){ var obj=o;
    window.setTimeout("bbb(obj)",500);
    }function bbb(o1){
    alert(o1.value);
    }为什么var定义obj就不行,但是去了就可以啊
      

  2.   

    不是说必须要赋值再传
    而是你全局变量和局部变量混淆了
    <script language="javascript">
    var obj;//全局变量
    function aaa(obj){
    window.setTimeout("bbb(obj)",500);//500毫秒后执行bbb(obj),而执行这句的时候相当于是在
    //函数体外面执行的,所有此时的obj引用的是全局变量的那个,而js不检查全局变量跟局部变
    //量同名情况,在局部引用则引用局部变量(如果不存在再找全局变量),全局变量obj虽然已
    //经定义,但是一个空变量,传给bbb函数后alert(obj.value)则会是undefined
    }function bbb(obj){
    alert(obj.value);
    }
    </script>
      

  3.   

    不好意思再问下,obj是全局变量,可在局部没有重新定义,我们在局部修改的obj也应该对下面有用啊
      

  4.   

    <script language="javascript">
    var obj;//全局变量
    function aaa(obj){
    bb(obj)
    function bbb(obj){
    alert(obj.value);
    }
    </script>
    这样就可以为什么window.setTimeout("bbb(obj)",500);这样就不行,浪花给你加分帮看看啊,
    你说的我不是很明白
      

  5.   

    <script language="javascript">
    var obj;//全局变量
    function aaa(obj){//传进来的参数(局部变量)
      bb(obj);//1.引用不是全局变量,而是参数
      function bbb(obj){//1.引用不是全局变量,而是参数
      alert(obj.value);//1.引用不是全局变量,而是参数
    }
    alert(obj.value);//2.引用全局变量
    </script>
    -------------------------------------
    <script language="javascript">
    var obj;//全局变量
    function aaa(obj){//传进来的参数
    window.setTimeout("bbb(obj)",500);//0.5秒后执行bbb(obj),执行的时候已经不是在aaa函数
                                      //里了,而是跟上面"2.引用全局变量"类似
    }
    </script>