问题描述
||
我在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\">