简而言之,我在转发器中有一个锚点,该锚点在单击时触发一个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/

10-11 08:51