当我使用嵌入式 javascript 函数时,我可以使用以下代码获取元素的客户端ID :
document.getElementById('<%=buttonXXX.ClientID%>' )
但现在我正在使用外部javascript文件进行缓存和更快的渲染 并且此代码不再用于获取元素的客户端ID ,它会产生错误。
如何使用外部javascript文件获取客户端ID的元素 asp.net 2.0,netframework 3.5,c#,iis 7.5
答案 0 :(得分:30)
我可以提出两种方法。
在调用javascript之前定义变量,在可以编译的 .aspx 文件中。
var ButtonXXXID = <%=buttonXXX.ClientID%>
// and now include your javascript and use the variable ButtonXXXID
在外部javascript文件中,将代码编写为:
function oNameCls(ControlId1) {
this.ControlId1 = ControlId1;
this.DoYourWork1 = function() {
// use the control id.
// this.ControlId1
}
}
并称呼你的行为。
<script>
// init - create
var <%=this.ClientID%>MyCls = new oNameCls('<%=Control1.ClientID%>');
// do your work
<%=this.ClientID%>MyCls.DoYourWork1();
</script>
以这种方式调用操作,您可以防止从同一页面上的其他控件使用相同操作覆盖一个控件中的一个操作。
答案 1 :(得分:4)
您可以使用类选择器。 jquery可能会大大简化您的生活。所以你可以在控件中应用一个特殊的类:
<asp:LinkButton ID="foo" CssClass="foo" runat="server" Text="foo" />
并在外部javascript文件中,一旦DOM准备就绪,您可以使用类选择器引用该按钮:
$(function() {
var fooButton = $('.foo');
});
答案 2 :(得分:1)
在脚本文件(test.js
)
function test(ControlID1) {
var controlId = document.getElementById(ControlID1);
controlId.onchange = function () {
alert(controlId.value);
}
}
<{1>}文件中的
.aspx
答案 3 :(得分:1)
我在.js
文件中使用以下代码,当时我没有其他更好的选择。
$("[id$='buttonXXX'])
答案 4 :(得分:-1)
我知道旧问题,但是使用jquery你可以使用这个方法:
Aspx文件
<asp:Button ID="btnCalculate" ClientID="btnCalculate" runat="server" />
外部js文件
$("[ClientID='btnCalculate']").
https://lanitdev.wordpress.com/2009/06/08/extending-jquery-to-select-asp-controls/