asp.net获取控件ID

程序员秋三 2012-03-16 09:02:59
<html xmlns="http://www.w3.org/1999/xhtml" >
<body onload="init()">
<form id="Form1" method="post" runat="server" clientidmodel="static" >

<FONT face="宋体">
<%--<a href="www.baidu.com" ">sss</a>--%>
<asp:DataList id="DataList1" style="Z-INDEX: 101; LEFT: 8px; POSITION: absolute; TOP: 0px" runat="server"
RepeatDirection="Horizontal" ShowHeader="False" ShowFooter="False" RepeatLayout="Flow"
>
<ItemTemplate>
<asp:Image ID="Image1" runat="server" Height="16px" ></asp:Image>
<asp:HyperLink id="HyperLink1" runat="server">[HyperLink1]</asp:HyperLink>

</ItemTemplate></asp:DataList>

</FONT>
<script>

function init() {
var hy=document.getElementById("<%=HyperLink1.ClientID%>");
alert(hy);

}

</script>
</form>
</body>
</html>

为什么获取不到Hyperlink1的控件iD,alert为null
...全文
454 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
洪爷爷 2012-03-16
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 kongwei521 的回复:]
HyperLink 生成的html 是a标记 用下面的方法去找。
var inputs = document.getElementById("<%=DataList1.ClientID%>").getElementsByTagName("a");

for(var i=0;i<inputs;i++)
{


}
[/Quote]
是A标记,但照样有ID,我用vs帮你看了一下,运行后页面不显示DataList控件,我把DataList 的runat=“server”删了,运行正常,你应该从为什么不显示DataList下手,据说是没有绑定数据源
我改的代码如下:
11.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="11.aspx.cs" Inherits="html_11" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<font face="宋体">
<!--<a href="www.baidu.com" ">sss</a>-->
<asp:DataList id="DataList1" style="Z-INDEX: 101; left: 8px; position: absolute;top: 0px" RepeatDirection="Horizontal" ShowHeader="False" ShowFooter="False" RepeatLayout="Flow">
<ItemTemplate>
<asp:Image ID="Image1" runat="server" Height="56px" ImageUrl="~/img/add/add1.jpg" ></asp:Image>
<asp:HyperLink id="HyperLink1" runat="server" Width="100px">[HyperLink1]123</asp:HyperLink>


</ItemTemplate>

</asp:DataList>
<input type="button" onclick="init()" value="123456"/>
</font>
</div>
</form>
<script defer="defer" type="text/javascript" >
function init() {
var hy = document.getElementById('<% =HyperLink1.ClientID%>');
alert(hy.innerHTML);
}
</script>
</body>
</html>

程序员秋三 2012-03-16
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 muowuluo 的回复:]
var hy=document.getElementById("HyperLink1.ClientID").(你要得到的属性);
这样应该可以了
[/Quote]
这样确实不可以。我试了,说缺少对象。
muowuluo 2012-03-16
  • 打赏
  • 举报
回复
var hy=document.getElementById("HyperLink1.ClientID").(你要得到的属性);
这样应该可以了

程序员秋三 2012-03-16
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 kongwei521 的回复:]
C# code
function init() {
var hyid = document.getElementById("<%=mytable.ClientID%>").getElementsByTagName("a");
for (var j = 0; j < hyid.length; j++) {
alert(hyid[j……
[/Quote]
请问getElementsByTagName("a")这东西是怎么来的。
蝶恋花雨 2012-03-16
  • 打赏
  • 举报
回复
function init() {
var hyid = document.getElementById("<%=mytable.ClientID%>").getElementsByTagName("a");
for (var j = 0; j < hyid.length; j++) {
alert(hyid[j].id);
}
}

<input type="button" onclick="init()">
已经测试好用。
蝶恋花雨 2012-03-16
  • 打赏
  • 举报
回复
HyperLink 生成的html 是a标记 用下面的方法去找。
var inputs = document.getElementById("<%=DataList1.ClientID%>").getElementsByTagName("a");

for(var i=0;i<inputs;i++)
{


}
程序员秋三 2012-03-16
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 happy_it_yatou 的回复:]
<script type="text/javascript" language="javascript">
function init() {
var hy = document.getElementById('HyperLink1');
alert(hy);

}

</script>

这样子你看一下行吗?好像不会出现你说的那个错误!!不过返回的值是……
[/Quote]
恩,你这个办法我也试过了,就是null。哎,好纠结啊。
Happy_IT_Yatou 2012-03-16
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 kongwei521 的回复:]
在后台获取吧
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
HyperLink link = (HyperLink)e.Item.FindControl( "HyperLink1");
link.Attributes.Add( "onclick ", "javaScript……
[/Quote]

基本上都是这样实现的..我想了一下也是这样的!!呵呵...
Happy_IT_Yatou 2012-03-16
  • 打赏
  • 举报
回复
<script type="text/javascript" language="javascript">
function init() {
var hy = document.getElementById('HyperLink1');
alert(hy);

}

</script>

这样子你看一下行吗?好像不会出现你说的那个错误!!不过返回的值是null 所以..我暂时也不知道..待研究
朕赐你肥皂 2012-03-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 kite5121314 的回复:]

引用 9 楼 gaind 的回复:
是这样的,因为你HyperLink 是包括在DataList中的,无法直接从form页面去获取

例子查看http://www.cnblogs.com/qzzm/articles/1158678.html

这个办法我看过,只能这样吗,没有在直接在javascript写的办法了吗
[/Quote]

只能是从后台去动态的事件形式去获取,不然前台无法获取到ID
蝶恋花雨 2012-03-16
  • 打赏
  • 举报
回复
在后台获取吧
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
HyperLink link = (HyperLink)e.Item.FindControl( "HyperLink1");
link.Attributes.Add( "onclick ", "javescript:init() ");
}
程序员秋三 2012-03-16
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 gaind 的回复:]
是这样的,因为你HyperLink 是包括在DataList中的,无法直接从form页面去获取

例子查看http://www.cnblogs.com/qzzm/articles/1158678.html
[/Quote]
这个办法我看过,只能这样吗,没有在直接在javascript写的办法了吗
朕赐你肥皂 2012-03-16
  • 打赏
  • 举报
回复
是这样的,因为你HyperLink 是包括在DataList中的,无法直接从form页面去获取

例子查看http://www.cnblogs.com/qzzm/articles/1158678.html
程序员秋三 2012-03-16
  • 打赏
  • 举报
回复
<html xmlns="http://www.w3.org/1999/xhtml" >
<body >
<form id="Form1" method="post" runat="server" clientidmodel="static" >
<FONT face="宋体">
<%--<a href="www.baidu.com" ">sss</a>--%>
<asp:DataList id="DataList1" style="Z-INDEX: 101; LEFT: 8px; POSITION: absolute; TOP: 0px" runat="server"RepeatDirection="Horizontal" ShowHeader="False" ShowFooter="False" RepeatLayout="Flow">
<ItemTemplate>
<asp:Image ID="Image1" runat="server" Height="16px" ></asp:Image>
<asp:HyperLink id="HyperLink1" runat="server">[HyperLink1]</asp:HyperLink>
</ItemTemplate></asp:DataList>
<input type="button" onclick="init()">
</FONT>
</form>
<script defer="defer" >
function init() {
var hy=document.getElementById("<% =HyperLink1.ClientID%>");
alert(hy);
}
</script>
</body>
</html>

改成这样也不行,错误:当前上下午不存在hyperlink1
色拉油 2012-03-16
  • 打赏
  • 举报
回复
估计是写的太早了[Quote=引用 2 楼 bdmh 的回复:]

<body onload="init()">
加载时就调用init了,那是还没有创建下面的组件吧,你把init放到按钮事件中,肯定能得到
[/Quote]
程序员秋三 2012-03-16
  • 打赏
  • 举报
回复
报错是:当前上下文不存在hyperlink1
程序员秋三 2012-03-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 qq13237810775 的回复:]
这样应该不行的!

你查看源码看下!
[/Quote]
上面已经是全部代码了。
程序员秋三 2012-03-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bdmh 的回复:]
<body onload="init()">
加载时就调用init了,那是还没有创建下面的组件吧,你把init放到按钮事件中,肯定能得到
[/Quote]
招你说的添加了按钮事件,还是一样不行。
qq2013 2012-03-16
  • 打赏
  • 举报
回复
这样应该不行的!

你查看源码看下!
bdmh 2012-03-16
  • 打赏
  • 举报
回复
<body onload="init()">
加载时就调用init了,那是还没有创建下面的组件吧,你把init放到按钮事件中,肯定能得到
加载更多回复(1)

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧