如何通过 JS 文件中的 javascript 获取 ASP.NET 控件的客户端 id 值?


如何通过内容页面中的 JS 文件中的 JavaScript 获取 asp.net 控件的客户端 id 值,并且该 JS 文件是从同一页面引用的。
我正在使用 .net 框架 3.5。 我正在获取客户端 id 值,如下所示
document.getElementById(‘<%=txtDDAExpiryDate.ClientID%>‘).value;。 我遇到以下异常
未捕获的类型错误:无法读取 null 的属性(读取“值”)

我尝试过的:

代码如下

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

解决方案1

始终从阅读文档开始: 文档:getElementById() 方法 – Web API | MDN[^] – 很明显它返回一个 null 当具有该 ID 的元素不存在时:

引用:

描述与指定 ID 匹配的 DOM 元素对象的 Element 对象,如果在文档中未找到匹配元素,则返回 null。

所以现在你需要知道——到底是什么—— txtDDAExpiryDate.ClientID 从服务器返回,然后尝试手动将其与您的 HTML 进行匹配。
这会告诉您问题出在哪里:服务器端或客户端。
当你知道这一点时,你应该能够解决它。

使用调试器(或者只是将其写在页面上)来查找。

抱歉,我们无法为您做到这一点 – 您是时候学习一项新的(并且非常非常有用)技能了:调试!

解决方案2

由于 HTML 文档中的 ID 应该是唯一的,因此 WebForms 通过将任何服务器端控件的 ID 与其层次结构中每个“命名容器”的 ID 相结合来“破坏”任何服务器端控件的 ID。

如果您可以迁移到 .NET 4.x,那么您也许可以使用 ClientIDMode 属性[^] 覆盖该行为。

否则,您需要找到另一种方法来识别您的元素。 例如:

JavaScript
document.querySelector("*[id$='_txtDDAExpiryDate']")

文档:querySelector() 方法 – Web API | MDN[^]

コメント

タイトルとURLをコピーしました