怎么在后台先执行JS再执行button

如何在后台先执行JS再执行button?
我想在后台取到前端的值,这是我的前端

 var add =  "<input type='text' id='" + t + "' runnat='server'    />" + "<input type='button'  value='添加'id='" + b + "' onclick = 'add()'/>" + "<br />";

 <input type="text" id="txt2" runat="server" />

<asp:Button ID="btn_Add" runat="server" Text="添 加" OnClick="btn_Add_Click" CssClass="btnround btn-red" />

这是一个动态生成控件的代码和一个接收值的text控件,还有个后台事件的button控件,动态控件中button控件执行结果是一样的,这个不管他。

JS里想实现的功能是把在动态控件中生成的所有值都拼接在一起,用“ | ”来隔开,JS代码如下:

        function add() {
            for (var i = 0; i < c; i++) {
                var t = "t";
                t = t + i;
                d = document.getElementById(t).value + "|";
                e += d;
                alert(e);
                document.getElementById("txt2").value = e;
            }
        }


后台代码如下,在 protected void btn_Add_Click(object sender, EventArgs e)里面写

        ClientScript.RegisterStartupScript(this.GetType(), "mJsKey3", "add()", true);
        all_text = Request.Form["txt2"];


传过来的东西是undefined|,这就说明我并没有调用到JS方法,为什么会这样。add()方法是没问题的,因为动态button是能成功调用的,调用过后我在点一次后天button添加就能把值添加到后台了,但是我想要点一次后台的button就能把控件的值传过来要怎么做?
------解决方案--------------------
try this:
http://www.cnblogs.com/insus/archive/2011/01/26/1945582.html
------解决方案--------------------
一个http请求道服务器是先生成一个页面【也就是先执行你所谓的“后台”程序】,返回到客户端,然后再执行js
也就是说你在后台调用js的add方法的时候你实际js中方法都还没有生成,也就没有反应了。


------解决方案--------------------
http://blog.****.net/yangmingxing980/article/details/23682877