javascript错误:Microsoft JScript运行时错误:'document.getElementById(...)'为null或不是对象

时间:2011-08-17 15:36:40

标签: javascript asp.net vb.net

当我调用javascript函数显示模态窗口时,我收到此错误:

  

Microsoft JScript运行时错误:'document.getElementById(...)'为null或不是对象

代码块是:

else if (action=="officeview") {
    document.getElementById("OfficeContent").src="ChangeView.aspx";
    ShowFeatureModal('AppView','OfficeContent')

对象就是这种情况,确实存在。

错误是由document.getElementById行引起的。 还有什么可能导致错误?

更新
Index.aspx正在调用位于sysUtilities.js文件中的javascript函数。源文件是一个单独的页面(ChangeView.aspx)

4 个答案:

答案 0 :(得分:3)

如果document.getElementById找不到该元素,则会返回null。如果您尝试从src获取null属性,则会收到此错误。

您需要确保其ID等于OfficeContent的元素或执行以下操作:

else if (action=="officeview") {
    var officeContent = document.getElementById("OfficeContent")
    if (officeContent) {
        officeContent.src="ChangeView.aspx";
        ShowFeatureModal('AppView','OfficeContent')
    }
}

编辑:如果您使用的是ASP.NET,那么请记住,如果它们位于容器控件中,您的ID可能会受到名称限制。在这种情况下,您必须确保使用ClientID,而不是普通的ID。像这样:

document.getElementById("<%= OfficeContent.ClientID %>")

答案 1 :(得分:1)

在这种情况下不知道它是否有用,但这是防止错误的一个技巧:

(document.getElementById("OfficeContent")||{}).src="ChangeView.aspx";

如果元素不存在,则空对象获取src - 属性,不会抛出任何错误,也不会造成任何伤害。

虽然查找document.getElementById("OfficeContent")返回null的原因可能是明智的。

答案 2 :(得分:0)

在设置元素的src属性

之前,您需要先测试元素是否存在
var el = document.getElementById("OfficeContent");
el && (el.src="ChangeView.aspx");

答案 3 :(得分:0)

所有这些东西都是主要问题的外围,即:

您必须使用“OfficeContent”的实际clientID,它在呈现时可能与页面的HTML DOM完全不同。避免这种情况的一种简单方法就是这样:

var officeContent = document.getElementById(“&lt;%= OfficeContent.ClientID%&gt;”)