简单地说,我在转发器中有一个锚点,点击一个javascript函数触发,它将Div的innerHTML设置为某些内容。
在转发器外面尝试这个确实有效! 但如果我试图在转发器的项目模板中实现相同的代码,它将无法正常工作!
注意:我想我首先需要访问转发器,然后访问它内部的Anchor!但我不知道该怎么做
进一步说明:
JavaScript功能:
function show(ele, content) {
var srcElement = document.getElementById(ele);
if (srcElement != null) {
srcElement.innerHTML = content;
}
}
转发器的代码:
<asp:Repeater ID="Repeater1" runat="server" >
<ItemTemplate>
Name : <%# Eval("name")%>
<DIV ID= "PersonalInfo1" runat="server"></DIV>
<A id="A1" href="#" runat="server" onclick="show('PersonalInfo1','Address : ')">More...</A>
</ItemTemplate>
</asp:Repeater>
PS:发布的代码没有在中继器上工作!
答案 0 :(得分:3)
这是因为id是唯一的。使用getElementsByName或其类名选择元素,例如jQuery。
答案 1 :(得分:1)
好的......让我们重新开始吧。
有这样的转发器代码:
<asp:Repeater ID="Repeater1" runat="server" >
<ItemTemplate>
<div>
Name : <%# Eval("name")%>
<div id="Address" runat="server" style="display: none;"><%# Eval("address")%></div>
<div id="Interests" runat="server" style="display: none;"><%# Eval("interests")%></div>
<a id="A1" href="#" runat="server" onclick="return show(this, 'Address');">Show address</a>
<a id="A2" href="#" runat="server" onclick="return show(this, 'Interests');">Show interests</a>
</div>
</ItemTemplate>
</asp:Repeater>
然后是这样的JavaScript代码:
function show(oLink, targetDivID) {
var arrDIVs = oLink.parentNode.getElementsByTagName("div");
for (var i = 0; i < arrDIVs.length; i++) {
var oCurDiv = arrDIVs[i];
if (oCurDiv.id.indexOf(targetDivID) >= 0) {
var blnHidden = (oCurDiv.style.display == "none");
oCurDiv.style.display = (blnHidden) ? "block" : "none";
//oLink.innerHTML = (blnHidden) ? "Less..." : "More...";
}
}
return false;
}
这将搜索所点击链接的“兄弟”DIV元素,并显示或隐藏它。
使用纯JavaScript的代码尽可能简单,你应该能够理解每一行的作用 - 如果你不这样做,可以随意询问。 :)
注意,您必须事先将个人信息放在PersonalInfo div中,而不是将其传递给函数 - 该函数将获得指向所点击链接的指针。
答案 2 :(得分:0)
是的,您需要迭代所有相关链接。涉及最小代码更改的解决方案是向链接添加类,然后检查此类:
<A id="A1" href="#" runat="server" class="RepeaterLink" ...>
然后在JavaScript中:
var arrLinks = document.getElementsByTagName("a");
for (var i = 0; i < arrLinks.length; i++) {
var oLink = arrLinks[i];
if (oLink.className == "RepeaterLink") {
//found link inside repeater..
oLink.click();
}
}
这将“自动点击”所有链接,您可以查看ID或其他内容,以模仿转发器中特定链接的点击。