简体   繁体   English

通过单击原始元素或其他元素来切换可见性

[英]Toggle visibility with click on original element or another element

So I have a function that makes an element visible when called: 所以我有一个函数,使元素在调用时可见:

 function toggle_visibility(id) { var e = document.getElementById(id); if (e.style.display == 'block') e.style.display = 'none'; else e.style.display = 'block'; } 
 <a class="button" href="#" onclick="toggle_visibility('first');">Button</a> <a class="url" id="first" href="#">First</a> <a class="button" href="#" onclick="toggle_visibility('second');">Button2</a> <a class="url" id="second" href="#">Second</a> 

And that works, but what I want is for an element to toggle off if I use the function for a different id. 那行得通,但是如果我将函数用于其他ID,我想要的是关闭一个元素。 So if I first toggle on #first but then toggle on #second I want #first to toggle off. 因此,如果我先打开#first,然后再打开#second,我希望#first关闭。

Try this: 尝试这个:

 var lastId = null; function toggle_visibility(id) { if (lastId && id != lastId) { var lastEl = document.getElementById(lastId); lastEl.style.display = 'none'; } lastId = id; var e = document.getElementById(id); if(e.style.display == 'block') e.style.display = 'none'; else e.style.display = 'block'; } 
 <a class="button" href="#" onclick="toggle_visibility('first');">Button</a> <a class="url" style='display:block' id="first" href="#">First</a> <a class="button" href="#" onclick="toggle_visibility('second');">Button2</a> <a class="url" style='display:block' id="second" href="#">Second</a> 

This is one possible solution. 这是一种可能的解决方案。

  function toggle_visibility(id) { if (id=='first'){ var e = document.getElementById(id); var f = document.getElementById('second'); } else {var e = document.getElementById(id); var f = document.getElementById('first');} if(e.style.display == 'block'){ e.style.display = 'none'; f.style.display= 'block';} else { e.style.display = 'block'; f.style.display = 'none';} } 
 <a class="button" href="#" onclick="toggle_visibility('first');">Button</a> <a class="url" id="first" href="#">First</a> <a class="button" href="#" onclick="toggle_visibility('second');">Button2</a> <a class="url" id="second" href="#">Second</a> 

You can try this 你可以试试这个

 toggle_visibility = function(id) { var all_urls = document.getElementsByClassName('url'); var e = document.getElementById(id); for(var i=0;i<all_urls.length;i++){ if(all_urls[i].id !== id) all_urls[i].style.display= 'none'; } if(e.style.display == 'block') e.style.display = 'none'; else e.style.display = 'block'; } 
 <a class="button" href="#" onclick="toggle_visibility('first');">Button</a> <a class="url" id="first" href="#">First</a> <a class="button" href="#" onclick="toggle_visibility('second');">Button2</a> <a class="url" id="second" href="#">Second</a> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM