Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何隐藏与未使用jQuery单击的元素最近的元素?_Javascript_Html - Fatal编程技术网

Javascript 如何隐藏与未使用jQuery单击的元素最近的元素?

Javascript 如何隐藏与未使用jQuery单击的元素最近的元素?,javascript,html,Javascript,Html,我有一个函数,可以在单击图标时更改图标的src属性。 我还希望它隐藏类fave_图标最近的图标。我尝试了以下方法,但无效: function trash(event, trashcan){ event.stopPropagation(); if (trashcan.getAttribute('src') == "Iconos/tacho.png") { trashcan.src = "Iconos/warning.png"; //this works ok

我有一个函数,可以在单击图标时更改图标的src属性。 我还希望它隐藏类fave_图标最近的图标。我尝试了以下方法,但无效:

function trash(event, trashcan){
    event.stopPropagation();
    if (trashcan.getAttribute('src') == "Iconos/tacho.png")
    {
        trashcan.src = "Iconos/warning.png"; //this works ok
        var heart = trashcan.closest(".fave_icon");
        heart.style.visibility = "hidden"            
    }
}
基本上,我想用类fave_图标隐藏最接近垃圾桶的元素

在HTML中,我有几次这样做:

<button class="accordion">
  <div>
    <img src="Iconos/heart.png" onclick="fav(event,this);" alt="Fave" class="fave_icon">
  </div>
  <div>
    <img src="Iconos/tacho.png" onclick="trash(event,this);" alt="Delete" class="delete_icon">
  </div>
</button>
如果fave_icon是一个类,则必须放置点。在类名称之前作为选择器的一部分

更改var heart=trashcan.closestfave_图标

var heart=trashcan.closest.fave_图标

根据您提供的代码和HTML,您可以执行以下操作:

功能垃圾箱{ 事件。停止传播; 如果trashcan.getAttribute'src'==Iconos/tacho.png{ trashcan.src=Iconos/warning.png;//这工作正常 var heart=trashcan.最近的“按钮”.querySelector.fave_图标”; heart.style.visibility=隐藏; } }
从垃圾箱图标,您可以向上一级到达div,选择上一级元素同级以获取心脏的div,然后向下一级到达心脏图像本身

因为该元素已经包含在事件目标中,所以不需要传递该元素。或者,更好的是,如果您首先选择垃圾图像,您可以完全避免这种情况,并使用显式变量名,这更容易理解和调试

但内联事件处理程序本质上是HTML标记内部的eval-它们是一种糟糕的做法,并且会导致分解不良、难以管理的代码。认真考虑用JavaScript附加事件,例如:

另一个问题是按钮不应该有结束标记。改用容器元素,比如div

那么,试试这样的方法:

document.querySelectorAll'img[src=Iconos/tacho.png]'。forEachimg=>{ img.onclick==>{ const heartImg=img.parentElement.previousElementSibling.children[0]; heartImg.style.visibility='hidden'; }; };
如果两个项相邻,则可以向单击的元素添加一个类,并使用常规同级组合符

document.getElementByIdhide .addEventListenerclick,事件=>{ 添加'active'; },假; hide.active~.元素{ 可见性:隐藏; } 隐藏{ 光标:指针; } .手风琴{ 填充:15px; 背景:浅灰色; 边框底部:1px纯色灰色; } ·手风琴部{ 颜色:黑色; 右边距:20px; }
这取决于你所说的“最近”是什么意思。请提供一个最大限度地减少猜测不要发布图片。。。。。。请添加HTML。我发布了部分HTML,可以吗?还是应该添加更多?我的意思是,这一部分也包含在js的其他几个divsmany选项中。接下来呢?谢谢,这肯定是个问题,但仍然不是working@Stackoverflowed,请用所需的HTML更新问题…谢谢。好的,我刚做了it@Stackoverflowed,非常欢迎您……很高兴知道您能够开始……快乐编程。