我如何使用JavaScript访问RUNAT =“服务器”的ASP元素?
-
21-08-2019 - |
题
似乎每个人都这样做,(在代码中的职位等)...但是我不”知道如何:(
每当我试图使用JavaScript来操纵一个asp元素i得到一个“元素为空”或“文档是未定义”等错误.....
JavaScript的通常工作正常,...但只有当我添加RUNAT =“server”属性不元素似乎看不到我的JavaScript。
任何建议,将不胜感激
谢谢,安德鲁
解决方案
什么是可能发生的是,你的元素/控制是在其中充当命名容器(母版页的ITemplate,向导等),一个或多个ASP.NET控件,而这是造成其ID更改。
您可以使用“查看源文件”在浏览器中,以确认这是什么发生在呈现的HTML。
如果您的JavaScript是在ASPX页面,最简单的方法来暂时解决那就是的使用元素的ClientID属性。例如,如果你有你想要经由JS引用一个控制名为TextBox1中:
var textbox = document.getElementById('<%= TextBox1.ClientID %>');
其他提示
制作的元件runat="server"
改变基于什么ASP.NET命名容器它的内部该元素的客户端ID。所以,如果你使用document.getElementById
操纵元素,你需要将它传递由.NET生成新的ID。看看进入客户端Id 属性来获取生成的ID ...你可以在你的JavaScript嵌入使用它,像这样:
var element = document.getElementById('<%=myControl.ClientID%>');
如果你有一个文本框:
<asp:TextBox id="txtText" runat="server" />
您可以使用:
var textBox=document.getElementById('<%=txtText.ClientID %>');
任何WebControl的公开相同的ClientID属性。
所有虽然问题已经回答了,以为我会只是张贴一些进一步的信息...
里克施特拉尔这个问题提供了一阵的intresting工作。
http://www.west-wind.com/WebLog/posts /252178.aspx
值得庆幸的是,当ASP .NET 4.0到来时,它会允许你指定exacly客户ID的将是什么!
http://www.codeproject.com/KB/aspnet/ASP_NET4_0ClientIDFeature.aspx