似乎每个人都这样做,(在代码中的职位等)...但是我不”知道如何:(

每当我试图使用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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top