我有一个asp.net文本框,我使用
获取文本框的IDvar tbFilterValueClientID = "<%= tbFilterValue.ClientID %>";
但是当我使用它时,我会这样做
var tbFilterValue = document.getElementById(tbFilterValueClientID);
之后,我能够执行并获得它的价值,如:
var filterValue = tbFilterValue.value.toString().trim();
所以任何人都可以解释为什么我需要
的document.getElementById
并传递控制权?为什么我不能使用
tbFilterValueClientID
直接?
答案 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页面上。