我有一个隐藏的div,直到你点击显示按钮。我的代码适用于单个实例,问题是我重复了多次,所以它只需要显示最近的而不是使用ID,但我不知道该怎么做。
这是我的代码:
<form class="form1">
...
</form>
<a onclick="showDiv()">Show</a>
<div id="show" style="display:none;">
<form id="form2">
'''
</form>
</div>
*repeated*
<form class="form1">
...
</form>
<a onclick="showDiv()">Show</a>
<div id="show" style="display:none;">
<form id="form2">
'''
</form>
</div>
<script>
function showDiv() {
document.getElementById('show').style.display = "block";
}
</script>
如何为点击的内容显示相应的div?
更新:我想按最近的班级选择而不是最近的兄弟
答案 0 :(得分:2)
HTML ID被认为是唯一的,这意味着您只能使用一次。您正在使用id show
两次,它只被分配给第一个元素,因为,就像我之前说的那样,ID是唯一的,不能使用两次。
我建议将id更改为class并在名为getElementsByClassName
的所有类上检查show
并查找显示为false的第一个并使显示为true!
答案 1 :(得分:0)
如果您要显示的div
绝对将始终显示在a
之后,您可以尝试这样做:
function showDiv(e){
e.target.nextElementSibling.style.display='block';
}
答案 2 :(得分:0)
document.querySelectorAll('.someClassName')[0]
使用someClassName
获取所有元素的第一个元素。
或者,如果您想在单击元素下方找到div,则可以
function showDiv(event) {
const clickedElement = event.target;
clickedElement.nextElementSibling.style.display = 'block';
}
答案 3 :(得分:0)
答案 4 :(得分:0)
id
需要独一无二。在您的情况下,您可以使用nextSibling来设置下一个元素的显示
function showDiv(elem) {
elem.nextSibling.style.display = "block"
}
<form class="form1">
...
</form>
<a onclick="showDiv(this.nextSibling)">Show</a>
<div id="show1" style="display:none;">
<form id="form21">
text1
</form>
</div>
<form class="form1">
...
</form>
<a onclick="showDiv(this.nextSibling)">Show</a>
<div id="show2" style="display:none;">
<form id="form22">
text2
</form>
</div>