获取datalist的itemtemplate里的hyperlink控件ID

程序员秋三 2012-03-09 09:03:36
      <body onload="init()">
<form id="Form1" method="post" runat="server" >

<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" onmouseover="showImg()" onmouseout="init()">[HyperLink1]</asp:HyperLink>


       <script>
function GetPos(obj){
var pos=new Object();
pos.x=obj.offsetLeft;
pos.y=obj.offsetTop;
while(obj=obj.offsetParent){
pos.x+=obj.offsetLeft;
pos.y+=obj.offsetTop;
}
return pos;
}
function init() {
var img = window.parent.document.getElementById("thisisapic");

if (img.style.display != "none") {
img.style.display = "none";
}
}
function showImg() {
var url = "../../images/person.gif";
var img = window.parent.document.getElementById("thisisapic");
img.style.zIndex="1000";
// img.style.position="absolute";
img.style.width =60;
img.style.height = 60;
// img.style.top=200;
// img.style.left=200;
var hy=document.getElementById("<%=HyperLink1.ClientID%>");

var pos=GetPos(hy);
img.style.left=(hy.offsetWidth/2+pos.x+140)+"px";
img.style.top=(hy.offsetHeight+pos.y+8)+"px";
img.src = url;
if (img.style.display == "none") {
img.style.display = "block";
}
}
</script>

错误:上下文无Hyperlink1这个东西。
...全文
208 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
程序员秋三 2012-03-09
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 qxj1985 的回复:]
生成页面之后你看看源代码中的HyperLink的ID是否为HyperLink1,已经变了
[/Quote]
能在说明白一点么?我看不懂啊?什么生成页面之后变了?
qxj1985 2012-03-09
  • 打赏
  • 举报
回复
生成页面之后你看看源代码中的HyperLink的ID是否为HyperLink1,已经变了
holicc 2012-03-09
  • 打赏
  • 举报
回复
那你换一种方式了,http://www.cnblogs.com/qzzm/articles/1158678.html你看看
程序员秋三 2012-03-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 holicc 的回复:]
var hy=document.getElementById("HyperLink1"); 试一下
[/Quote]
弹出的alert为null
holicc 2012-03-09
  • 打赏
  • 举报
回复
var hy=document.getElementById("HyperLink1"); 试一下
程序员秋三 2012-03-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hrabeyond 的回复:]
<form id="Form1" method="post" runat="server" clientidmodel="static" >

试下
[/Quote]
试了,还是为空。但是,我这段代码竟然在w3c school提供的编译器编译成功,这是为什么呢,我用的vs2005.vs2005就失败。
手抓宝 2012-03-09
  • 打赏
  • 举报
回复
<form id="Form1" method="post" runat="server" clientidmodel="static" >

试下
华华果果 2012-03-09
  • 打赏
  • 举报
回复
假如id为33时,HyperLink33
var hy=document.getElementById("HyperLink33"); 试一下

如果还不行,那可能页面中你用了母版页,你应该在运行后的页面中查看html源码,比如叫ctl00_cpContent_HyperLink33,那么你用

var hy=document.getElementById("ctl00_cpContent_HyperLink33");
孟子E章 2012-03-09
  • 打赏
  • 举报
回复
因为是ItemTemplate,所以,里面会有很多的<asp:HyperLink id="HyperLink1",客户端的id是必须变的,否则,你是无法识别出来的
孟子E章 2012-03-09
  • 打赏
  • 举报
回复
<asp:HyperLink id="HyperLink1" runat="server" onmouseover="showImg()" onmouseout="init()">[HyperLink1]</asp:HyperLink>
改成
<asp:HyperLink id="HyperLink1" runat="server" onmouseover="showImg(this)" onmouseout="init(this)">[HyperLink1]</asp:HyperLink>

function showImg() {
相应改成
function showImg(x) {
alert(x.id)
...

var hy=x;

就可以了
华华果果 2012-03-09
  • 打赏
  • 举报
回复
1,在itemplate中设置hyperlink的id值id='HyperLink<%# Eval("Id")%>'

<asp:HyperLink id='HyperLink<%# Eval("Id")%>' runat="server" onmouseover="showImg()" onmouseout="init()">[HyperLink1]</asp:HyperLink>

2,假如id为33时,HyperLink33

var hy=document.getElementById("HyperLink33"); 试一下

如果你要遍历hyperlink,用jquery来做会更方便

如果帮上忙,多给点分哈

netstudy0105 2012-03-09
  • 打赏
  • 举报
回复
LinkButton link = (LinkButton)e.Item.FindControl( "link1 ");
5楼正解

62,074

社区成员

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

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

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

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