比如用户登录了.将他的name存在Session["name"]里面.
我知道setInterval()这样可以传值
function a(s)
{
   alert(s);
}
var obj = document.getElementById("TextBox1");setInterval(function () { a(obj); }, 2000);
我的问题:
1.我先在.cs的pageload里面定义了string name=Session["name"].toString();并把它赋给TextBox1,但是setInterval()方法里面还是读不出来值,该如何做?

解决方案 »

  1.   

    你在代码页把值赋给textbox1之后,再通过scriptregister来注册js脚本来调用 setInterval 所在的方法
      

  2.   

     ClientScript.RegisterClientScriptBlock(this.GetType(), "", "<script>...</script>");
      

  3.   

    var obj = document.getElementById("<% =TextBox1.ClientID %>"); 
      

  4.   


    三楼正解~  
    page.ClientScript.RegisterStartupScript(page.GetType(),"message", " <script language='javascript'>alert('" + msg.ToString() + "'); </script>");  这样也可以的~
      

  5.   

    我注册了,可读出来还是null,帮我看下,我哪里写错了吗?
            this.TextBox1.Text = "test";        StringBuilder sb = new StringBuilder();
            sb.Append("<script type=text/javascript> function a(s) ");
            sb.Append("{");
            sb.Append(" alert(s);");
            sb.Append("}");
            sb.Append("var obj = document.getElementById('TextBox1');");
            sb.Append("setInterval(function () { a(obj); }, 2000);");
            sb.Append("</script>");
                   Page.RegisterClientScriptBlock("test", sb.ToString());
      

  6.   

    哪里错了?读出来怎么还是null?
      

  7.   

    sb.Append("var obj = document.getElementById('TextBox1').value;"); 
    有模板页的话取TextBox就用<% =TextBox1.ClientID %>")
      

  8.   

    我加.value了还是取不出来????
    加了代码报错.
      

  9.   

    var obj = document.getElementById(" <% =TextBox1.ClientID %>"); 
    用这个方法不行吗?这个是可以取到的
      

  10.   

    在后台吧值付给一个变量string str=TextBox1.text;var obj = document.getElementById(" <%=str%>").value; 
      

  11.   

    感谢各位兄弟的帮助,但还是取不出来啊.
    无论是用TextBox1.ClientID 还是注册代码块.
    哪位能帮忙运行调试下吗?
    就新建个页面,拖个TEXTBOX控件调试下???
      

  12.   

        private void Page_Load(object sender, System.EventArgs e)
        {
            Session["name"] = "abc";
            string name = Session["name"].ToString();
            Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script type='text/JavaScript'>var t = 5;function countDown() {t--;if(t == 0) alert('" + name + "'); setTimeout(countDown, 1000);} countDown();</script>");
        }
      

  13.   

    后台给textbox赋值 是否判断了ispostback
      

  14.   

    不好意思刚有事出去了会.
    非常感谢高歌兄,自己太笨,代码看了半天还没明白.有个问题还想问下        this.TextBox1.Text = "test"; 
            name=this.TextBox1.Text;
            StringBuilder sb = new StringBuilder(); 
            sb.Append(" <script type=text/javascript> function a(s) "); 
            sb.Append("{"); 
            sb.Append(" alert(s);"); 
            sb.Append("}"); 
            sb.Append("var obj = '"+name+"');");-------------------------->为什么我这样写就出错? 该如何修改?
            sb.Append("setInterval(function () { a(obj); }, 2000);"); 
            sb.Append(" </script>"); 
                  Page.RegisterClientScriptBlock("test", sb.ToString()); 
    1.高歌兄的代码为什么就可以读的出来呢?能帮我解释下吗?
    2.
    var t = 5;
    function countDown()
    {
    t--;
    if(t == 0)
     alert('test');-------->这是注册块后生成的代码,非要写在alert('')里才可以读出来吗?怎样写成传参的?因为我要做成把Session里的值用setInterval()传给另一个aspx页面的.是ajax.  setTimeout(countDown, 1000);
    }
    countDown();
      

  15.   

            this.TextBox1.Text = "test"; 
            string name=this.TextBox1.Text; 
            StringBuilder sb = new StringBuilder(); 
            sb.Append(" <script type=text/javascript> function a(s) "); 
            sb.Append("{"); 
            sb.Append(" alert(s);"); 
            sb.Append("}"); 
            sb.Append("var obj = '" + name+ "';") ; //你这里多了一个 )
            sb.Append("setInterval(function () { a(obj); }, 2000);"); 
            sb.Append(" </script>"); 
            Page.RegisterClientScriptBlock("test", sb.ToString());