显示隐藏的 div 并关闭其他 div,以便一次显示 1 个

Display hidden div and closes others so 1 is displayed at a time

提问人:Born2DoubleUp 提问时间:1/4/2020 最后编辑:Z KubotaBorn2DoubleUp 更新时间:1/4/2020 访问量:62

问:

我有一个用下面的 html 显示的项目列表。每个项目都有一个隐藏的 div,其中包含有关该项目的更多详细信息。我已经做到了,所以如果我单击 onclick 链接,它会显示该特定项目的 div。我想知道的是,如果我使用 onclick 显示其他项目详细信息,我将如何让它隐藏我刚刚打开的 div?另外,我怎样才能让它在单击相同的 onclick 时自行切换?我对 javascript 的了解有些有限,因此任何帮助将不胜感激。谢谢!

[HTML全

<div>Item Name <a onclick="FullItemDetails(123)">Full Item Details</a></div>
<div>other stuff</div>
</div>
<div id="FullItemDetails_123" style="display: none;"></div>

和 JAVASCRIPT

<script>
function FullItemDetails(item_id)  { 
document.getElementById("FullItemDetails_" + item_id).style.display = "block";
}
</script>

每个具有额外信息的 div 都有一个FullItemDetails_ ID,后跟项目的唯一 ID。

JavaScript HTML

评论

2赞 norbitrial 1/4/2020
这回答了你的问题吗?使用 JavaScript 显示/隐藏“div”
0赞 Born2DoubleUp 1/4/2020
谢谢,我会通读那篇文章!

答:

2赞 Zhephard 1/4/2020 #1

您可以找到其当前的 css 显示属性来切换可见性,如下所示

function FullItemDetails(item_id)  { 
  var currentItem = document.getElementById("FullItemDetails_" + item_id);

  if (currentItem.style.display === "block") {
    currentItem.style.display = "none";
  } else {
    currentItem.style.display = "block";
  }
}

评论

0赞 Zhephard 1/4/2020
谢谢@Born2DoubleUp如果合适,请随时将其标记为正确答案
1赞 Stefan Avramovic 1/4/2020 #2

您也可以使用事件侦听器来执行此操作,请参阅我的例子

var elements = document.getElementsByClassName('item')


for(var key in elements){
  
 elements[key].querySelector('.button').addEventListener('click', function(e){
    
  e.target.parentNode.querySelector('#description').style.display = 
    e.target.parentNode.querySelector('#description').style.display == 'none' ? 'block' : 'none'
   
  })
}
<div class="item">Item Name Full Item Details
  <div >Other stuff</div>
  <div id="description">Description</div>
  <button class="button">Toggle</button>
</div>

  <div class="item">Item Name Full Item Details
  <div >Other stuff</div>
  <div id="description">Description</div>
   <button class="button">Toggle</button>
</div>

  
  <div class="item">Item Name Full Item Details
  <div >Other stuff</div>
  <div id="description">Description</div>
 <button class="button">Toggle</button>
</div>