【发布时间】:2012-06-18 18:27:34
【问题描述】:
尝试引用当前 ContentPlaceHolder 之外的 ContentPlaceHolder 中的对象时出现 javascript 错误(它们都在同一个子页面上)。
错误是:Microsoft JScript 运行时错误:无法设置属性“值”的值:对象为空或未定义
发生错误的脚本行是:
<input type="submit" name="Master$cphMainContent$btnUnregister" value="Proceed" onclick="document.getElementById('Master_cphHeadContent_TimeAlert').value = GetSeconds(); return ValidateProvider(1);" id="cphMainContent_btnUnregister" class="netButton" />
TimeAlert 是 cphHeadContent ContentPlaceHodler 中的隐藏对象。
通常,我会知道对象 (TimeAlert) 在被调用时是不可见的。但是,这次是同一页,所以我无法弄清楚为什么该对象为空或未定义。
有什么建议可以解决这个错误吗?
【问题讨论】:
-
您确定您所指的控件的 id 与您指定的完全一致吗?使用 java 脚本时,请尝试使用其 ClientID 属性引用控件,而不是在脚本中对其进行硬编码。更多信息在这里msdn.microsoft.com/en-us/library/…。为此,您可以使用 和 %>,如下所述:stackoverflow.com/questions/7889035/…。
-
这是应该可以工作的预先存在的代码(除非我运行它时它不工作)
-
我想 java 脚本中可用的 id 可能取决于控件在页面结构中的位置。如果控件的 id 是硬编码的并且页面结构中发生了某些更改,则代码可能会停止工作,因为控件现在有了另一个 id。在您的浏览器中打开页面的源代码并验证是否存在带有此 id 的控件。如果不存在,您可以将 id 更新为有效值,但使用 Control.ClientID 可能是更好的解决方案。
-
TimeAlert 对象有哪些类型?它是一个隐藏字段吗?你确定这个对象有一个值属性吗?你能贴出这个对象的 HTML 生成代码吗?
标签: c# javascript asp.net master-pages contentplaceholder