ClientID和document.getElementById()有什么区别?

时间:2012-09-24 07:19:49

标签: javascript asp.net

我有一个asp.net文本框,我使用

获取文本框的ID
var tbFilterValueClientID = "<%= tbFilterValue.ClientID %>";

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

var tbFilterValue = document.getElementById(tbFilterValueClientID);

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

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

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

  

的document.getElementById

并传递控制权?为什么我不能使用

  

tbFilterValueClientID

直接?

4 个答案:

答案 0 :(得分:0)

clientid仅提供该服务器端具有id tbFilterValue的特定控件的客户端ID 并且你不能在id上执行opertion作为唯一的属性

你总是在控制上执行任何操作,当你调用getelementbyid时,你将获得控件(元素)

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

因为您使用var“&lt;%= tbFilterValue.ClientID%&gt;”

获得STRING而非OBJECT

如果你想要一个TextBox的值,你需要OBJECT而不是Object的id。

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

因此,您必须首先获取Id,然后通过该Id获取Object,并在该Object的最后一个中获取TextBox的值。

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

所以ClientId和document.getElementById的输出之间没有这样的区别,除了ClientId在Server端工作而getElementById在客户端工作。

答案 3 :(得分:0)

如果脚本将其存储在js文件中,该脚本将无效。

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

在ASPX页面上显示此内容时,<%= infoDiv.ClientID %>将在页面呈现时转换为'ctl00_ContentPlaceHolder1_infoDiv'

其中,js文件中的<%= infoDiv.ClientID %>始终为<%= infoDiv.ClientID %>且永远不会被转换。

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