简而言之,我在转发器中有一个锚点,该锚点在单击时触发一个javascript函数,该函数将Div的innerHTML设置为某些内容。
在中继器之外尝试此功能确实有效!
但是,如果我尝试在中继器的项目模板中实现相同的代码,它将无法正常工作!
注意:我想我需要先访问中继器,然后访问其中的锚点!但我不知道该怎么做
进一步说明:
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>
附言:所发布的代码无法在中继器中使用!
最佳答案
好...让我们重新开始。
有这样的中继器代码:
<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中,而不是将其传递给函数-该函数将获得指向所单击链接的指针。
关于c# - 如何使用JavaScript访问中继器内的Div,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4303668/