Javascript GetElementsByCassName从php foreach获取一个元素
我用HTML编写了这段代码,其中我用PHP编写了一个foreach,以便它生成每个div 我想在单击Ocultar(隐藏)和Mostrar(显示)时更改div class=“div oculto”的样式,但仅在选定的div中更改 我的问题是,当我单击“Ocultar”时,它会对类“div oculto”隐藏所有div,而不仅仅是所选的div。当我点击“Mostrar”时也会发生同样的情况。它向我显示了所有的div class=“div oculto”,而不仅仅是所选的一个 我不能使用getElementById(),因为每个div都是根据PHP生成的foreach创建的 我想我必须向元素中添加一个addEventListener(),但我不知道如何才能使它正常工作 请帮帮我 非常感谢你Javascript GetElementsByCassName从php foreach获取一个元素,javascript,php,Javascript,Php,我用HTML编写了这段代码,其中我用PHP编写了一个foreach,以便它生成每个div 我想在单击Ocultar(隐藏)和Mostrar(显示)时更改div class=“div oculto”的样式,但仅在选定的div中更改 我的问题是,当我单击“Ocultar”时,它会对类“div oculto”隐藏所有div,而不仅仅是所选的div。当我点击“Mostrar”时也会发生同样的情况。它向我显示了所有的div class=“div oculto”,而不仅仅是所选的一个 我不能使用getEle
函数Mostrar(){
var elements=document.getElementsByClassName('div-oculto');
对于(var i=0;i
- 杜拉西翁
- 霍拉里奥
是的,您需要为要单击的每个对象应用一个事件侦听器,但不能作为一个组。不过,您仍然可以对这些组使用相同的处理程序函数。
例如:
var ocultoElements = [];
window.onload = function () {
ocultoElements = document.getElementsByClassName('div-oculto');
for (i = 0; i < elements.length; i++) {
ocultoElements[i].addEventListener("click", oculto_clickHandler.bind(this));
}
}
function oculto_clickHandler(e) {
for (i = 0; i < ocultoElements.length; i++) {
if (ocultoElements[i] !== e.target) {
ocultoElements[i].style.display = "none";
}
else {
ocultoElements[i].style.display = "block";
}
}
}
var ocultoElements=[];
window.onload=函数(){
ocultoElements=document.getElementsByClassName('div-oculto');
对于(i=0;i
这将是最简单的方法。通过使用this
引用每个单独的项目,您可以显著缩短此代码。我必须从html标记中删除onclick吗?我删除了它,但它暂时不起作用:(首先,您不应该对类使用与元素id相同的名称,因为这将导致混淆(对您而言)第二,如果您只想让某些div元素对特定的按钮单击事件做出反应,那么您应该在每个单击事件处理程序中分别将它们作为目标。我所写的是对您所介绍内容的概括方法。