C# 如何使用javascript访问中继器内的Div

C# 如何使用javascript访问中继器内的Div,c#,javascript,asp.net,webforms,C#,Javascript,Asp.net,Webforms,简单地说,我在一个转发器中有一个锚,它在单击javascript函数时触发,该函数将Div的innerHTML设置为某些内容 在转发器外面试试这个确实管用! 但是,如果我尝试在repeater的项目模板中实现相同的代码,它将不起作用 注意:我想我需要先访问转发器,然后访问转发器内的锚!但我不知道怎么做 为了进一步说明: JavaScript函数: function show(ele, content) { var srcElement = document.getElementById(

简单地说,我在一个转发器中有一个锚,它在单击javascript函数时触发,该函数将Div的innerHTML设置为某些内容

在转发器外面试试这个确实管用! 但是,如果我尝试在repeater的项目模板中实现相同的代码,它将不起作用

注意:我想我需要先访问转发器,然后访问转发器内的锚!但我不知道怎么做

为了进一步说明:

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:发布的代码在中继器中不起作用

这是因为id是唯一的。使用getElementsByName或通过类名选择元素,例如jQuery。

这是因为id是唯一的。使用getElementsByName或通过类名选择元素,例如jQuery。

是,您需要迭代所有相关链接。涉及最小代码更改的解决方案是将类添加到链接,然后检查此类:

<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();
    }
}
var arrLinks=document.getElementsByTagName(“a”);
对于(var i=0;i

这将“自动单击”所有链接,您可以检查ID或其他内容,以模拟中继器中特定链接的单击。

是的,您需要迭代所有相关链接。涉及最小代码更改的解决方案是将类添加到链接,然后检查此类:

<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();
    }
}
var arrLinks=document.getElementsByTagName(“a”);
对于(var i=0;i

这将“自动点击”所有链接,您可以检查ID或其他内容,以模拟中继器中特定链接的点击。

确定。。。让我们重新开始

有这样的转发器代码:

<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;
}
功能显示(oLink、targetDivID){
var arrDIVs=oLink.parentNode.getElementsByTagName(“div”);
对于(变量i=0;i=0){
变量blnHidden=(oCurDiv.style.display=“无”);
oCurDiv.style.display=(blnHidden)?“块”:“无”;
//oLink.innerHTML=(blnHidden)?“更少…”:“更多…”;
}
}
返回false;
}
这将搜索单击链接的“brother”DIV元素,并显示或隐藏它

使用纯JavaScript,代码尽可能简单,您应该能够理解每一行正在做什么-如果不了解,请随时询问。)


注意,您必须提前将个人信息放入PersonalInfo div,而不是将其传递给函数-函数将获得指向单击链接的指针。

确定。。。让我们重新开始

有这样的转发器代码:

<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;
}
功能显示(oLink、targetDivID){
var arrDIVs=oLink.parentNode.getElementsByTagName(“div”);
对于(变量i=0;i=0){
变量blnHidden=(oCurDiv.style.display=“无”);
oCurDiv.style.display=(blnHidden)?“块”:“无”;
//oLink.innerHTML=(blnHidden)?“更少…”:“更多…”;
}
}
返回false;
}
这将搜索单击链接的“brother”DIV元素,并显示或隐藏它

使用纯JavaScript,代码尽可能简单,您应该能够理解每一行正在做什么-如果不了解,请随时询问。)


注意,您必须提前将个人信息放入PersonalInfo div,而不是将其传递给函数-函数将获得指向单击链接的指针。

顺便说一句,使用jQuery可以缩短JavaScript代码,使其更“浏览器安全”。这是你的电话。:)事实上,我在研究(Javascript、JQuery、Ajax)之间的区别,我知道它们各自的定义,但不知道它们的确切用途是什么?当然,如果你认为jQuery比较好,我会考虑使用jQuery,但是任何向导或指针都会有帮助(Y)!lKashef-jQuery是JavaScript库-您只需添加对jQuery代码文件的引用,就可以使用它了。想想蛋糕:你可以自己烤蛋糕(纯JavaScript),也可以在商店里买别人做的蛋糕。(jQuery)@Shadow Wizard:你需要提到的是,商店里的这块蛋糕是由技术娴熟的人制作的,所以你可以很肯定它在不同浏览器中的味道都是一样的。@难以捉摸-说得好。。蛋糕的价格约为80千字节顺便说一句,使用jQuery可以缩短JavaScript代码,使其更加“浏览器安全”。这是你的电话。:)事实上,我在研究(Javascript、JQuery、Ajax)之间的区别,我知道它们各自的定义,但不知道它们的确切用途是什么?当然,如果你认为jQuery比较好,我会考虑使用jQuery,但是任何向导或指针都会有帮助(Y)!lKashef-jQuery是JavaScript库-您只需添加对jQuery代码文件的引用,就可以使用它了。想想蛋糕:你可以自己烤蛋糕(纯JavaScript),也可以在商店里买别人做的蛋糕。(jQuery)@Shadow Wizard:你需要提到的是,商店里的这块蛋糕是由技术娴熟的人制作的,所以你可以很肯定它在不同浏览器中的味道都是一样的。@难以捉摸-说得好。。蛋糕的价格约为80千字节驻留,我想访问一个特殊的