首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用javascript访问runat=服务器组件?

如何使用javascript访问runat=服务器组件?
EN

Stack Overflow用户
提问于 2009-03-23 20:19:47
回答 4查看 26.4K关注 0票数 9

似乎每个人都在这样做(在代码、帖子等)...but,我不知道是怎么做的。:(

每当我尝试使用JavaScript操作asp元素时,我得到一个"element is null""document is undefined"等错误.....

JavaScript通常工作得很好,...but只有当我添加runat="server"属性时,元素对我的JavaScript看起来是不可见的。

如有任何建议,我们将不胜感激。

谢谢,安德鲁

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-03-23 20:24:20

可能发生的情况是,您的元素/控件位于一个或多个用作命名容器(母版页、ITemplate、向导等)的ASP.NET控件中,这会导致其ID发生更改。

您可以在浏览器中使用"view source“来确认在呈现的HTML中发生了什么。

如果你的JavaScript在ASPX页面中,暂时解决这个问题的最简单的方法就是use the element's ClientID property。例如,如果您希望通过JS引用一个名为TextBox1的控件:

代码语言:javascript
复制
var textbox = document.getElementById('<%= TextBox1.ClientID %>');
票数 27
EN

Stack Overflow用户

发布于 2009-03-23 20:24:56

将元素设为runat="server"会根据元素所在的ASP.NET命名容器更改该元素的客户端ID。因此,如果你使用document.getElementById来操作元素,你需要将.NET生成的新ID传递给它。查看ClientId属性,得到生成的ID...you可以像这样在你的Javascript中内联使用它:

代码语言:javascript
复制
var element = document.getElementById('<%=myControl.ClientID%>');
票数 3
EN

Stack Overflow用户

发布于 2009-03-23 20:23:35

如果你有一个文本框:

代码语言:javascript
复制
<asp:TextBox id="txtText" runat="server" />

YOu可以使用:

代码语言:javascript
复制
var textBox=document.getElementById('<%=txtText.ClientID %>');

任何WebControl都公开相同的ClientID属性。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/675060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档