后台代码:
protected void Button1_Click(object sender, EventArgs e)
        {
            Response.Write("<script type='text/javascript'>SetSum();</script>");
            string dd = Text1.Value;
        }
前台代码:
<script language="javascript" type="text/javascript">
     function SetSum()
       {                  
            document.getElementById('Text1').value="123123";//////给最后计算结果赋值                 
       }
</script>
可是在后台获取Text1值时,为什么一直是空呢?

解决方案 »

  1.   

    后台代码执行完毕后生成整个页面,然后传回客户端,js在客户端运行
    所以Response.Write("<script type='text/javascript'>SetSum();</script>");
    执行完毕后 SetSum没有被执行,自然取不到所谓更改后的值另外建议用RegisterStartupScript,别用response.write输出脚本
      

  2.   

    为什么要这样做呐?直接在前台用JS计算并赋Text1值不行吗?
      

  3.   

    Text1.Value 既然在后台可以访问到
    那么还是在后台写个方法吧,而无需在调用前台的JS把
      

  4.   


    <script language="javascript" type="text/javascript">
      function SetSum()
      {  
      document.getElementById('Text1').value="123123";//////给最后计算结果赋值  
      }
    </script><asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click"  OnClientClick="SetSum()"/>
    protected void Button1_Click(object sender, EventArgs e)
      {
      string dd = Text1.Value;
      }  这样 不就行了嘛。 你为什么要那么写呢
      

  5.   

    方法1:非要后台赋值:
    服务器端控件外加上updatepannel
    (或者服务器端的 OnClientClick)
    方法2:客服端赋值 服务器取值
        前台:  <asp:Button ID="Button1" runat="server" Text="取值"   OnClick="Button1_Click" />
            <input id="Button2" type="button" value="赋值"  onclick="SetSum();"/>
            <asp:TextBox ID="Text1" runat="server"></asp:TextBox> 
                <script language="javascript" type="text/javascript">
      function SetSum()
      {   
      document.getElementById('Text1').value="123123";//////给最后计算结果赋值   
      }后台:
        protected void Button1_Click(object sender, EventArgs e)
        {
            Response.Write("<script type='text/javascript'>SetSum();</script>");
            //ClientScript.RegisterStartupScript(this.GetType(), "aa", "SetSum();", true);
            string dd = Text1.Text;
            Response.Write(dd);
        }
      

  6.   


    刷新页面了 Text1肯定是空的赛
      

  7.   

    直接写个JS不就OK了,按钮的客户端事件,OnClientClick="SetSum();"不就完事了?楼主是这个意思?
      

  8.   

    asp.net整个页面生命周期先搞清楚。什么先执行,什么后执行。后台还没执行完,HTML还没呈现,当然没值
      

  9.   

    调用前台方法可以用:
    ScriptManager.RegisterStartupScript(this, this.GetType(), "SetSum()", true);
      

  10.   

    太混乱了,服务器端怎么可能调用得到javascript
      

  11.   

    参考:
    CS是怎样调用js的方法:
    http://www.cnblogs.com/insus/articles/1945539.html
    或者:
    http://www.cnblogs.com/insus/articles/1945582.html
      

  12.   

                    ClientScript.RegisterStartupScript(GetType(), "myscript", "<script>SetSum();</script>");
      

  13.   

    首先 第一你检查下你的写的 SetSum() 这个方法要放在BODY里 因为我估计你那个Text1 肯定是服务器控件第二:对于取服务器控件ID 你应该使用
    function SetSum()
      {  
      document.getElementById('<%=Text1.ClientID%>').value="123123";//////给最后计算结果赋值  
      }  
      

  14.   

    是这个问题。请问大家,在后台调用js函数时,如何执行js函数,然后再执行后台代码???(因为我的这个项目是,在后台将控件赋值,然后调用js,js在根据控件的内容 做出一些处理后,再将处理后的结果赋值给某控件,然后后台 再取出最后处理的结果。)有人可能会说直接在后台处理不就行了吗?
      

  15.   

    前台:
     <asp:Button ID="Button1" runat="server" Text="取值" OnClientClick="SetSum()" OnClick="Button1_Click" />
    function SetSum()
    {
    //这里是客户端代码
    if(true)
    {
    return true;//执行客户端事件后执行服务器端事件 Button1_Click
    }
    else
    return true;//仅执行客户端事件
    }
      

  16.   

    刚才写错了 不好意思:前台:
     <asp:Button ID="Button1" runat="server" Text="取值" OnClientClick="SetSum()" OnClick="Button1_Click" />
    function SetSum()
    {
    //这里是客户端代码
    if(true)
    {
    return true;//执行客户端事件后执行服务器端事件 Button1_Click
    }
    else
    return false;//仅执行客户端事件
    }