【问题标题】:javascript error when referencing Master-pages ContentPlaceHolder引用母版页 ContentPlaceHolder 时出现 javascript 错误
【发布时间】: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" />

TimeAlertcphHeadContent 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


【解决方案1】:

你如何在事件处理程序上设置组件 ID?

查看事件处理程序:

document.getElementById(&#39;Master_cphHeadContent_TimeAlert&#39;).value = GetSeconds(); return ValidateProvider(1);

注意 ' 是一个 HTML 编码的字符,这可能是你的问题。试试看:

document.getElementById('Master_cphHeadContent_TimeAlert').value = GetSeconds(); return ValidateProvider(1);

【讨论】:

  • 实际上这是我的错字。我从调试模式处理并粘贴了代码(当我收到 javascript 错误消息框时)。实际代码带有撇号,而不是 HTML 编码的字符。
猜你喜欢
  • 1970-01-01
  • 2012-12-24
  • 1970-01-01
  • 2016-06-01
  • 2017-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-23
相关资源
最近更新 更多