页面里还有大量其他代码,不相关的我不贴了,大概说下
    脚本是:
function savename(){
var sname = window.prompt("分类方案名称","请在此输入名称。");
var btn=document.getElementById('HiddenSaveButton'); 
document.dataform.sortname.value=sname;
btn.click();
}    前台的页面有一个FORM:<form id="dataform"  runat="server">
dataform放了一个隐藏域:<input type=Hidden name=sortname>
还有一个input button:<input id="SaveButton" type="button" value="保存分类方案" onclick="savename()"/>
还有一个ASP:BUTTON:<asp:Button ID="HiddenSaveButton" runat="server" Visible="false" OnClick="HiddenSaveButton_Click"/>   我的思路是这样的:点击SaveButton,执行savename(),这个弹出一个对话框,我把方案名输入,点确定,然后执行HiddenSaveButton的OnClick事件(写入数据库),我编译好发布之后,点击SaveButton,弹出对话框输入点击确定,不能执行HiddenSaveButton的OnClick事件,看了下说NULL为空或者不是对象。
   大家说下哪里出错了!

解决方案 »

  1.   

    document.dataform.sortname.value=sname; //问题就在这里。你要存数据但是这里没有这个对象
      

  2.   

    还有一个ASP:BUTTON: <asp:Button ID="HiddenSaveButton" runat="server" Visible="false" OnClick="HiddenSaveButton_Click();"/> 
    你的onclick定义的不对,调用方法,括号要加上
      

  3.   

    而且
    var btn=document.getElementById('HiddenSaveButton'); 
    document.dataform.sortname.value=sname; 
    btn.click(); 
    你不觉得这么写多余么,直接调用HiddenSaveButton_Click();不更好?
      

  4.   

    document.getElementById('<%=HiddenSaveButton.ClientID%>'); 
      

  5.   

    ^_^,2楼的提示提醒了我,虽然没直接说明。
    3楼的,我的后台是C#的,那个不用加括号也可以表示方法啊。
    4楼的,其实我最开始是直接用document.getElementById('HiddenSaveButton').click();
    但是一直出错,我就用BAIDU到处找,然后看别人的类似问题,自己想了下,因为我对JSP不大熟悉,我不大清楚document.getElementById()拿到的是什么对象,我以为是document.getElementById('HiddenSaveButton')不能直接用CLICK方法呢,所以就改了一下。
    5楼的方法跟上面的效果一样。
    我原来那个问题出现的原因是,那个是个弹出的窗口,要加上提交啊,加这个document.dataform.submit();我没提交,当然输入的sname找不到,所以就提示空值。
    但是现在又出现新问题,貌似在客户端JSP中调用服务器端ASP:BUTTON的CLICK方法没用啊,没提示出错,但是我在后台定义的方法没用啊,我特意加了Response.Write("aaaaaa");有效的话应该会出现aaaaaa字符串啊
    protected void HiddenSaveButton_Click(object sender, EventArgs e)
        {
            string typename = Request["user"].Trim();
            Response.Write("aaaaaa");
        }
      

  6.   

    问题解决了,是我不小心,下面的代码
    protected void HiddenSaveButton_Click(object sender, EventArgs e) 
        { 
            string typename = Request["user"].Trim(); 
            Response.Write("aaaaaa"); 
        }
    中string typename = Request["user"].Trim(); 应该是string typename = Request["sortname"].Trim(); 因为隐藏域的name是sortname,我自己改了,后台代码没注意改过来,呵呵!