.CS
   protected void Page_Load(object sender, EventArgs e)
   {      
        if (!Page.IsPostBack)
        {
            btSubmit.Attributes.Add("onClick", "return Submit();");
        }
   }   //点击按钮时
   protected void btSubmit_Click(object sender, EventArgs e)
    {        
        hfCount.Value = Convert.ToString(m - n); //m,n为两个变量
        string strUrl = string.Empty;
        string strTypeID = Request.QueryString["TestFeelID"].ToString();
        strUrl = "TestEnd.aspx?TypeID=" + strTypeID + "";
        Response.Redirect(strUrl);
    }.aspx中:
<script language="javascript" type="text/javascript">
var mCount; 
var strTemp;
function Submit()
{
    mCount = document.all('hfCount').value;
    if ( mCount == "0" )
    {
        return confirm('确定要提交吗?');
    }
    else
    {
        strTemp = "您还有未完成,确定要提交吗?";
        return confirm(strTemp);
    }
}
</script>现在在的困惑是:JavaScript中的document.all('hfCount').value一直为空!
望各位高手不吝赐教~
谢谢~~~

解决方案 »

  1.   

    document.all( 'hfCount ').value
    是个什么控件,值是哪儿来的?
      

  2.   

    hfCount是什么啊?控件吗?在.aspx里怎么定义的啊 
      

  3.   

    隐藏域,我把它换成TextBox也不行~
    它的值是在Click事件的时候给的~
      

  4.   

    改为这个试一下。
    mCount = document.getElementById( 'hfCount ').value; 
      

  5.   

      <asp:HiddenField ID="hfCount" runat="server" />
      

  6.   

    背着灵魂漫步发表于:2007-10-22 18:06:044楼 得分:0 
    改为这个试一下。 
    mCount = document.getElementById(  'hfCount  ').value; 
    ==================================================================================
    谢谢~~~
    试过,也不行~
      

  7.   

    是不是runat=serve的原因啊
    document.getElementById(<%= "'"+ this.hfCount.ClientID + "'"%>)试试
      

  8.   

    mCount = document.getElementById('hfCount').value; 这个不会有问题吧,以前都是这样用的,没有问题啊,看看你控件的名字是不是写错了? 
      

  9.   

    还有就是看看你的hfCount控件是不是真的被赋值了
     hfCount.Value = Convert.ToString(m - n); 这句执行通过了吗?
      

  10.   

    document.getElementById( '<%= hfCount.ClientID% >')
      

  11.   

    cndotnetfan 是不是runat=serve的原因啊 
    document.getElementById( <%= " '"+ this.hfCount.ClientID + " '"% >)试试
    ===========================================================================================
    还没有运行就报错~============================================================================================
    蓝色妖姬mCount = document.getElementById( 'hfCount ').value; 这个不会有问题吧,以前都是这样用的,没有问题啊,看看你控件的名字是不是写错了?  
    ===============================================================================================
    没有写错~
    <asp:HiddenField ID="hfCount" runat="server" / >谢谢~~~
      

  12.   

    蓝色妖姬
    发表于:2007-10-22 18:28:1310楼 得分:0 
    还有就是看看你的hfCount控件是不是真的被赋值了 
     hfCount.Value = Convert.ToString(m - n); 这句执行通过了吗? 
    ================================================
    这一句在弹出确认框后才被执行,我想应该是程序执行顺序的问题!
    但不知道怎么解决~
      

  13.   

    写写代码,发发帖子
    发表于:2007-10-22 18:29:5311楼 得分:0 
    document.getElementById(  ' <%= hfCount.ClientID%  > ') 
    ===============================================
    还没有运行就报错~ 
      

  14.   

    还没有运行就报错~ 
    ???
    不可能吧,把多余的空格删掉
    要不你把你的画面得到的HTML程序贴出来吧
      

  15.   

    以下是我的例子,没问题啊
    .aspx
    <body>
    <script type="text/javascript">
    <!--
    var mCount;
    function test()
    {
        mCount = document.getElementById(<%= "'"+ this.hfCount.ClientID + "'"%>).value; 
        alert(mCount);
    }
    // -->
    </script>
        <form id="form1" runat="server">
        <div>
            <input id="Button1" type="button" value="button" onclick="return test();"/>
            <asp:HiddenField ID="hfCount" runat="server" />
            </div>
            
        </form>
    </body>
    .cs
        protected void Page_Load(object sender, EventArgs e)
        {
            this.hfCount.Value = "20";
        }
      

  16.   

    应该是控件问题,把服务器控件换成HTML控件试试!
      

  17.   

    btSubmit.Attributes.Add("onClick", "return Submit();");   ->  onclick 小写
      

  18.   

    cndotnetfan  
    发表于:2007-10-22 19:19:3217楼 得分:0 
    以下是我的例子,没问题啊 
    .aspx 
    <body > 
    <script type="text/javascript" > 
    <!-- 
    var mCount; 
    function test() 

        mCount = document.getElementById( <%= " '"+ this.hfCount.ClientID + " '"% >).value;  
        alert(mCount); 

    // -- > 
    </script > 
         <form id="form1" runat="server" > 
         <div > 
             <input id="Button1" type="button" value="button" onclick="return test();"/ > 
             <asp:HiddenField ID="hfCount" runat="server" / > 
             </div > 
             
         </form > 
    </body > 
    .cs 
        protected void Page_Load(object sender, EventArgs e) 
        { 
            this.hfCount.Value = "20"; 
        }  ======================================================
    谢谢,我的Button是服务器端Button!点击后往数据库插入记录~~~
      

  19.   

    hfCount.Value = Convert.ToString(m - n);
    这一句在弹出确认框后才被执行,我想应该是程序执行顺序的问题! 
    但不知道怎么解决~ 
      

  20.   

    client 端的代码是先于服务器端事件执行的。这是机制问题。估计改是改不了的。你可以定义公共变量,然后试着在客户端用<%=你的变量%>来取得
      

  21.   

    LZ个人问题-----
    function test() 

        mCount = document.getElementById(  <%= "  '"+ this.hfCount.ClientID + "  '"%  >).value;  
       alert(mCount);
    }  CS:
    page_load事件中
    btSubmit.Attributes.Add("onclick", "test()"); 
      

  22.   

    发表于:2007-10-22 23:51:4523楼 得分:0 
    LZ个人问题----- 
    function test()  
    {  
        mCount = document.getElementById(   <%= "   '"+ this.hfCount.ClientID + "   '"%   >).value;   
       alert(mCount); 
    }   CS: 
    page_load事件中 
    btSubmit.Attributes.Add("onclick", "test()");  
    =============================================================================================
    不太明白?
      

  23.   

    honey52570 发表于:2007-10-22 23:34:3222楼 得分:0 
    client 端的代码是先于服务器端事件执行的。这是机制问题。估计改是改不了的。 你可以定义公共变量,然后试着在客户端用 <%=你的变量% >来取得  
    ==============================================================================
    这个机制问题还没有其他的解决办法,怎样解决,望各位高手不吝赐教!
      

  24.   

    mCount = document.getElementById('hfCount').value;肯定行!
      

  25.   

    protected void btSubmit_Click(object sender, EventArgs e) 
        {         
            hfCount.Value = Convert.ToString(m - n); //m,n为两个变量 
            string strUrl = string.Empty; 
            string strTypeID = Request.QueryString["TestFeelID"].ToString(); 
            if(hfCount.Value=="0")
            {
              Page.ClientScript.RegisterStartupScript(this.GetType(), "go", "<script language='javascript'>if(confirm('确定要提交吗?')){window.location.href='TestEnd.aspx?TypeID=" + strTypeID + "';}</script>");         }
            else
            {
              Page.ClientScript.RegisterStartupScript(this.GetType(), "go", "<script language='javascript'>if(confirm('您还有未完成,确定要提交吗?')){window.location.href='TestEnd.aspx?TypeID=" + strTypeID + "';}</script>"); 
            }
           
         } 
      

  26.   

    LastGame 发表于:2007-10-23 09:14:1127楼 得分:0 
    mCount = document.getElementById( 'hfCount ').value; 肯定行! 
    ==========================================================================================
    hfCount.Value如果是一个固定的值话,是没有问题,但现在的问题是我是在
    protected void btSubmit_Click(object sender, EventArgs e)事件中给hfCount赋值,赋值语句为:
    hfCount.Value = Convert.ToString(m - n); 
    该语句是在在弹出确认框后才被执行,而hfCount.Value应该在弹出对话框前就得有值~
      

  27.   

    只要你的m,n再先于buttonclick之前能赋上值,那么就可以取得
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>無題のページ</title>
    <script type="text/javascript">
    function test()
    {
        alert(<%=value1%>-<%=value2%>);
    }
    </script>
    </head><body>
        <form id="form1" runat="server">
        <div>
            <asp:Button ID="Button1" runat="server"  OnClientClick="test()" OnClick="Button1_Click" Text="Button" /></div>
        </form>
    </body>
    </html>
    public partial class passvalue : System.Web.UI.Page
    {
        public int value1 = 3;
        public int value2= 23;    protected void Page_Load(object sender, EventArgs e)
        {    }
        protected void Button1_Click(object sender, EventArgs e)
        {    }
    }
      

  28.   

    只说一点,document.all(  'controlName').value  中controlName要的是元素的name属性,一般id会直接复制成name 但也有不一定的时候,拿.all找id会出错
      

  29.   

    1.
    honey52570说的没错,是机制问题,建议你有时间学习一下ASP.NET的机理
    如果你的BUTTON点击引起的POST过程里m和n没有变化,可以直接
    if ( <%= m-n %> == "0" )
    根本不用什么控件
    如果点击事件里会引起m或n的变化,只好用RegisterStartupScript再引发一次POST
    2.
    function test()   
    {   
        mCount = document.getElementById(    <%= "    '"+ this.hfCount.ClientID + "    '"%    >).value;    
       alert(mCount);  
    }    CS:  
    page_load事件中  
    btSubmit.Attributes.Add("onclick", "test()");   
    ============================================================================================= 
    >>不太明白?哪里不明白
    3.
    >>谢谢,我的Button是服务器端Button!点击后往数据库插入记录~~~ Server端BUTTON在HTML里一定也是HTML BUTTON
    如果你只是测试Javascript,用HTML BUTTON更直接
      

  30.   

    发表于:2007-10-23 09:26:4630楼 得分:0 
    只要你的m,n再先于buttonclick之前能赋上值,那么就可以取得 
     
    ================================================================
    m,n是在buttonclick之后得到的
      

  31.   

    cndotnetfan 发表于:2007-10-23 09:51:46
    Server端BUTTON在HTML里一定也是HTML BUTTON 
    如果你只是测试Javascript,用HTML BUTTON更直接 
    ====================================================================
    不是测试JavaScript
      

  32.   

    之后得到的就用ClientScript.RegisterStartupScript
      

  33.   

    kyouken2007发表于:2007-10-23 10:25:1335楼 得分:0 
    之后得到的就用ClientScript.RegisterStartupScript 
    ==========================================================
    谢谢,ClientScript.RegisterStartupScript 怎么用?
      

  34.   

    楼上有人已经回复了,先判断m-n在操作
    protected void btSubmit_Click(object sender, EventArgs e)  
        {          
            hfCount.Value = Convert.ToString(m - n); //m,n为两个变量  
            string strUrl = string.Empty;  
            string strTypeID = Request.QueryString["TestFeelID"].ToString();  
            if(hfCount.Value=="0") 
            { 
              Page.ClientScript.RegisterStartupScript(this.GetType(), "go", " <script language= 'javascript ' >if(confirm( '确定要提交吗? ')){window.location.href= 'TestEnd.aspx?TypeID=" + strTypeID + " ';} </script >");          } 
            else 
            { 
              Page.ClientScript.RegisterStartupScript(this.GetType(), "go", " <script language= 'javascript ' >if(confirm( '您还有未完成,确定要提交吗? ')){window.location.href= 'TestEnd.aspx?TypeID=" + strTypeID + " ';} </script >");  
            } 
            
         }