如何在asp:Repeater中将getElementId用作标记

问题描述

|| 我在asp:Repeater中有一个div:
   <ItemTemplate>
          <div id=\"myDiv\" style=\"display:none\" />
   </ItemTemplate>
</asp:Repeater>

<script type=\"text/javascript\">
    window.onload = function() {
          document.getElementById(\'myDiv\').style.display = \'block\';
</script>
除了我的div元素出现在转发器中之外,这非常有用,这意味着仅找到第一个div。可以请我解释一下如何在ItemTemplate中获取所有div吗?     

解决方法

        在页面上多次使用相同的ID是无效的。相反,您将不得不使用其他一些方法来查找元素,例如css类。 jQuery使此任务变得容易。
$(\".someClass\").show();
但是,您甚至不需要这样做。如果您要做的只是在公共父项下更改一组元素上的某些样式,则只需更改父项的类名即可。考虑以下转发器:
<div id=\"repeaterParent\">
    <asp:Repeater runat=\"server\">
        <ItemTemplate>
            <div class=\"repeaterItemDiv\"></div>
        </ItemTemplate>
    </asp:Repeater>
</div>
像这样设置您的CSS:
#repeaterParent .repeaterItemDiv
{
    display: none;
}
#repeaterParent.showDivs .repeaterItemDiv
{
    display: block;
}
然后使用以下JavaScript:
document.getElementById(\"repeaterParent\").className = \"showDivs\";
或者,这个jQuery:
$(\"#repeaterItemParent\").addClass(\"showDivs\");
    ,        页面上不能有多个具有相同ID值的元素。改用类:
<ItemTemplate>
    <div class=\"myDiv\" style=\"display:none\" />
</ItemTemplate>
选择DIV:
document.getElementsByClassName(\'myDiv\')
// or
document.querySelectorAll(\'.myDiv\')
// or 
$(\'.myDiv\') // jQuery
    ,        如果要使用javascript执行此操作,则可以执行以下操作:
<div id=\"repeaterParent\">
    <asp:Repeater runat=\"server\">
        <ItemTemplate>
            <div id=\"myDiv\" style=\"display:none\" runat=\"server\"/>
        </ItemTemplate>
    </asp:Repeater>
</div>

<script type=\"text/javascript\">
    window.onload = function(){
          //get the parent element
          var ParentEle=document.getElementById(\'repeaterParent\');
          //get all the div tags within parent element
          var AllDivInParentEle=ParentEle.getElementsByTagname(\'DIV\');
          //loop div elements and do what is required
          for(var i=AllDivInParentEle.length-1;i>=0;i--){
            AllDivInParentEle[i].style.display = \'block\';
          }
   }
</script>
为div使用runat = \“ server \”将为其赋予自己的ID。 但是,如果div不需要ID,则javascript方法仍将起作用,因为它依赖于父元素ID。 所以你可以更换
<div id=\"myDiv\" style=\"display:none\" runat=\"server\"/>
<div style=\"display:none\">