<script>
    window.onload = function() {
        var obj = document.getElementById("test");
        if (window.confirm('确定是否删除?'))
        { obj.value = '1' }
        else
        { obj.value = '2' };
    }
</script>
<body>
    <form id="form1" runat="server">
    <div>
        <input id="test" type="text" runat="server" />
        <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
    </div>    
    </form>
</body>
后台:
    protected void Button1_Click(object sender, EventArgs e)
    {
        string strScript = "<script>";
        strScript += "var obj = document.getElementById('test');";
        strScript += "if (window.confirm('确定是否删除?'))";
        strScript += "{ obj.value = '1' }";
        strScript += "else";
        strScript += "{ obj.value = '2' };";
        strScript += "</script>";        RegisterClientScriptBlock("", strScript);
    }
同样的一段JS  在载入页面的时候,功能正确,但是点击按钮,触发事件后,发生错误:Microsoft JScript 运行时错误: 'obj' 为空或不是对象;纠结,不知道为什么,希望高手能指点下~~~

解决方案 »

  1.   

    是不是你在执行后台的时候前台代码被重新加载了,设置postback看下
      

  2.   

    原因很简单, 你的js代码输出肯定在<input>前面,因为运行js时,<input还没有加载完成,所以找不到对象!
    为什么不以客户端事件来做,不明白为什么要这样写应用!
      

  3.   

    楼主既然设置了runat="server" 的属性,那么在后台可以直接调用的。不需要再注册一段js了
      

  4.   

    RegisterStartupScript("", strScript);替代
    RegisterClientScriptBlock("", strScript); 
      

  5.   

    Page.ClientScript.RegisterStartupScript(this.GetType(), "", strScript);