-2

我有一个 asp.net 文本框,我得到了文本框的 ID 使用

var tbFilterValueClientID = "<%= tbFilterValue.ClientID %>";

但是当我使用它时,我会这样做

var tbFilterValue = document.getElementById(tbFilterValueClientID);

之后,我能够执行并获得它的价值,例如:

var filterValue = tbFilterValue.value.toString().trim();

所以任何人都可以解释为什么我需要

document.getElementById

和控制通行证?为什么我不能使用

tbFilterValueClientID

直接地?

4

4 回答 4

0

因为您通过使用 var "<%= tbFilterValue.ClientID %>" 得到一个 STRING not OBJECT

如果你想要一个文本框的值,你需要对象而不是对象的 id。

要获取对象,您需要该对象的客户端 ID。

因此,您必须先获取 Id,然后通过该 Id 获取 Object,最后从该 Object 获取 TextBox 的值。

客户端 ID 与服务器 ID 不同,因为可以存在具有相同服务器 ID 的控件(嵌套),但客户端 ID 始终是唯一的,因此在 javascript 中您需要一个唯一的 ID 来获取控件。

因此,ClientId 和 document.getElementById 的输出之间没有这种区别,除了 ClientId 在服务器端工作而 getElementById 在客户端工作。

于 2012-09-24T07:36:26.453 回答
0

如果将脚本存储在 js 文件中,则该脚本将不起作用。

var divID = document.getElementById('<%= infoDiv.ClientID %>');

当这在 ASPX 页面上时,<%= infoDiv.ClientID %>将转换为'ctl00_ContentPlaceHolder1_infoDiv'页面呈现时间。

其中,<%= infoDiv.ClientID %>在 js 文件中将永远<%= infoDiv.ClientID %>不会被转换。

因此,如果您想使用<%= infoDiv.ClientID %>,您的功能必须驻留在 ASPX 页面上。

于 2013-04-05T14:11:21.507 回答
0

请理解 document.getElementById 需要一个 ID,js 引擎可以通过该 ID 找到 dom 对象。

为 getElementById 传递的 ID 是控件的给定唯一标识符。

Client ID 是服务器端asp.net 控件为控件生成的ID,现在您将此ID 传递给getElementById 以获取对象。

于 2012-09-24T07:30:03.070 回答
0

clientid 仅提供该特定控件的客户端 id,该控件在服务器端具有 id tbFilterValue 并且您不能对 id 执行操作作为其唯一属性

您总是对控件执行任何操作,当您调用 getelementbyid 时,您将获得控件(元素)

于 2012-09-24T07:25:25.983 回答