<body onload="Ini()">
 <form id="form1" runat="server" >
  <div>
   <SCRIPT LANGUAGE="JavaScript">     var a=new Object();      
    
    function Ini(){
       a.y = 20;             
    }
    
    function b(){
        document.writeln(a.y); 
    }
   
    </SCRIPT>
<SCRIPT LANGUAGE="JavaScript"> b();</SCRIPT>
这样就可以了。不过还有个问题,你这样写的话,b会在Ini之前调用,打印出来的是undefiend

解决方案 »

  1.   

    多谢帮忙,我的问题是我必须把a 在ini里面初始化,而且这个ini还必须在body onload 里面调用。
    <body onload="Ini()">
     <form id="form1" runat="server" >
      <div>
       <SCRIPT LANGUAGE="JavaScript">     var  a;      
        
        function Ini(){
    a=new Object();
           a.y = 20;             
        }
        
        function b(){
            document.writeln(a.y); 
        }
       
        </SCRIPT>
    <SCRIPT LANGUAGE="JavaScript"> b();</SCRIPT>这样也不行!
      

  2.   

    关键是你的调用顺序。
    如果你在Ini()里才能定义a,那么b()就必须在Ini()之后执行!<body onload="Ini();b();">
     <form id="form1" runat="server" >
      <div>
       <SCRIPT LANGUAGE="JavaScript">     var  a;      
        
        function Ini(){
    a=new Object();
           a.y = 20;             
        }
        
        function b(){
            document.writeln(a.y); 
        }
    </body>   
        </SCRIPT>
    这样就可以了。
      

  3.   

    var a=new Object();      
      

  4.   

    只要b()是在body.onload()之后执行就没问题上面 </body>放错地方了~~
      

  5.   


    关键的问题是:function b 是由asp.net server side来调用的,两个办法:clientScript.RegisterScirtpBlock(); 或者是ClientScript.RegisterStartupScript(); 这两个方法生成的代码要不是就在<form>之后,要不就是 </form>之前,我没有办法把它放到和init所在的一个<script> block里面去!
      

  6.   

     function b(){
            document.writeln(a.y); 
        }
        function Ini(){
           a=new Object();
           a.y = 20;
           b();             
        }
     不知道这样改没改变原来的执行顺序